/*** Autogenerated by WIDL 1.6 from include/windows.system.threading.idl - Do not edit ***/

#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include <rpc.h>
#include <rpcndr.h>

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __windows_system_threading_h__
#define __windows_system_threading_h__

/* Forward declarations */

#ifndef __TimerElapsedHandler_FWD_DEFINED__
#define __TimerElapsedHandler_FWD_DEFINED__
typedef interface TimerElapsedHandler TimerElapsedHandler;
#endif

#ifndef __TimerDestroyedHandler_FWD_DEFINED__
#define __TimerDestroyedHandler_FWD_DEFINED__
typedef interface TimerDestroyedHandler TimerDestroyedHandler;
#endif

#ifndef __WorkItemHandler_FWD_DEFINED__
#define __WorkItemHandler_FWD_DEFINED__
typedef interface WorkItemHandler WorkItemHandler;
#endif

#ifndef __IThreadPoolStatics_FWD_DEFINED__
#define __IThreadPoolStatics_FWD_DEFINED__
typedef interface IThreadPoolStatics IThreadPoolStatics;
#endif

#ifndef __IThreadPoolTimer_FWD_DEFINED__
#define __IThreadPoolTimer_FWD_DEFINED__
typedef interface IThreadPoolTimer IThreadPoolTimer;
#endif

#ifndef __IThreadPoolTimerStatics_FWD_DEFINED__
#define __IThreadPoolTimerStatics_FWD_DEFINED__
typedef interface IThreadPoolTimerStatics IThreadPoolTimerStatics;
#endif

/* Headers for imported files */

#include <inspectable.h>
#include <windows.foundation.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __IAsyncAction_FWD_DEFINED__
#define __IAsyncAction_FWD_DEFINED__
typedef interface IAsyncAction IAsyncAction;
#endif

struct TimeSpan;

enum WorkItemPriority;

enum WorkItemOptions;

#ifndef __TimerElapsedHandler_FWD_DEFINED__
#define __TimerElapsedHandler_FWD_DEFINED__
typedef interface TimerElapsedHandler TimerElapsedHandler;
#endif

#ifndef __TimerDestroyedHandler_FWD_DEFINED__
#define __TimerDestroyedHandler_FWD_DEFINED__
typedef interface TimerDestroyedHandler TimerDestroyedHandler;
#endif

#ifndef __WorkItemHandler_FWD_DEFINED__
#define __WorkItemHandler_FWD_DEFINED__
typedef interface WorkItemHandler WorkItemHandler;
#endif

#ifndef __IThreadPoolStatics_FWD_DEFINED__
#define __IThreadPoolStatics_FWD_DEFINED__
typedef interface IThreadPoolStatics IThreadPoolStatics;
#endif

#ifndef __IThreadPoolTimer_FWD_DEFINED__
#define __IThreadPoolTimer_FWD_DEFINED__
typedef interface IThreadPoolTimer IThreadPoolTimer;
#endif

#ifndef __IThreadPoolTimerStatics_FWD_DEFINED__
#define __IThreadPoolTimerStatics_FWD_DEFINED__
typedef interface IThreadPoolTimerStatics IThreadPoolTimerStatics;
#endif

typedef enum WorkItemPriority {
    Low = -1,
    Normal = 0,
    High = 1
} WorkItemPriority;
typedef enum WorkItemOptions {
    None = 0,
    TimeSliced = 1
} WorkItemOptions;
typedef struct TimeSpan {
    INT64 Duration;
} TimeSpan;
/*****************************************************************************
 * TimerElapsedHandler interface
 */
#ifndef __TimerElapsedHandler_INTERFACE_DEFINED__
#define __TimerElapsedHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_TimerElapsedHandler, 0xfaaea667, 0xfbeb, 0x49cb, 0xad,0xb2, 0x71,0x18,0x4c,0x55,0x6e,0x43);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("faaea667-fbeb-49cb-adb2-71184c556e43")
TimerElapsedHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Invoke(
        IThreadPoolTimer *timer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(TimerElapsedHandler, 0xfaaea667, 0xfbeb, 0x49cb, 0xad,0xb2, 0x71,0x18,0x4c,0x55,0x6e,0x43)
#endif
#else
typedef struct TimerElapsedHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        TimerElapsedHandler* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        TimerElapsedHandler* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        TimerElapsedHandler* This);

    /*** TimerElapsedHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *Invoke)(
        TimerElapsedHandler* This,
        IThreadPoolTimer *timer);

    END_INTERFACE
} TimerElapsedHandlerVtbl;
interface TimerElapsedHandler {
    CONST_VTBL TimerElapsedHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define TimerElapsedHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define TimerElapsedHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define TimerElapsedHandler_Release(This) (This)->lpVtbl->Release(This)
/*** TimerElapsedHandler methods ***/
#define TimerElapsedHandler_Invoke(This,timer) (This)->lpVtbl->Invoke(This,timer)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT TimerElapsedHandler_QueryInterface(TimerElapsedHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG TimerElapsedHandler_AddRef(TimerElapsedHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG TimerElapsedHandler_Release(TimerElapsedHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** TimerElapsedHandler methods ***/
static FORCEINLINE HRESULT TimerElapsedHandler_Invoke(TimerElapsedHandler* This,IThreadPoolTimer *timer) {
    return This->lpVtbl->Invoke(This,timer);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE TimerElapsedHandler_Invoke_Proxy(
    TimerElapsedHandler* This,
    IThreadPoolTimer *timer);
void __RPC_STUB TimerElapsedHandler_Invoke_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __TimerElapsedHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * TimerDestroyedHandler interface
 */
#ifndef __TimerDestroyedHandler_INTERFACE_DEFINED__
#define __TimerDestroyedHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_TimerDestroyedHandler, 0x34ed19fa, 0x8384, 0x4eb9, 0x82,0x09, 0xfb,0x50,0x94,0xee,0xec,0x35);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("34ed19fa-8384-4eb9-8209-fb5094eeec35")
TimerDestroyedHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Invoke(
        IThreadPoolTimer *timer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(TimerDestroyedHandler, 0x34ed19fa, 0x8384, 0x4eb9, 0x82,0x09, 0xfb,0x50,0x94,0xee,0xec,0x35)
#endif
#else
typedef struct TimerDestroyedHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        TimerDestroyedHandler* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        TimerDestroyedHandler* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        TimerDestroyedHandler* This);

    /*** TimerDestroyedHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *Invoke)(
        TimerDestroyedHandler* This,
        IThreadPoolTimer *timer);

    END_INTERFACE
} TimerDestroyedHandlerVtbl;
interface TimerDestroyedHandler {
    CONST_VTBL TimerDestroyedHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define TimerDestroyedHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define TimerDestroyedHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define TimerDestroyedHandler_Release(This) (This)->lpVtbl->Release(This)
/*** TimerDestroyedHandler methods ***/
#define TimerDestroyedHandler_Invoke(This,timer) (This)->lpVtbl->Invoke(This,timer)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT TimerDestroyedHandler_QueryInterface(TimerDestroyedHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG TimerDestroyedHandler_AddRef(TimerDestroyedHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG TimerDestroyedHandler_Release(TimerDestroyedHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** TimerDestroyedHandler methods ***/
static FORCEINLINE HRESULT TimerDestroyedHandler_Invoke(TimerDestroyedHandler* This,IThreadPoolTimer *timer) {
    return This->lpVtbl->Invoke(This,timer);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE TimerDestroyedHandler_Invoke_Proxy(
    TimerDestroyedHandler* This,
    IThreadPoolTimer *timer);
void __RPC_STUB TimerDestroyedHandler_Invoke_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __TimerDestroyedHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * WorkItemHandler interface
 */
#ifndef __WorkItemHandler_INTERFACE_DEFINED__
#define __WorkItemHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_WorkItemHandler, 0x1d1a8b8b, 0xfa66, 0x414f, 0x9c,0xbd, 0xb6,0x5f,0xc9,0x9d,0x17,0xfa);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1d1a8b8b-fa66-414f-9cbd-b65fc99d17fa")
WorkItemHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Invoke(
        IAsyncAction *operation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(WorkItemHandler, 0x1d1a8b8b, 0xfa66, 0x414f, 0x9c,0xbd, 0xb6,0x5f,0xc9,0x9d,0x17,0xfa)
#endif
#else
typedef struct WorkItemHandlerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        WorkItemHandler* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        WorkItemHandler* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        WorkItemHandler* This);

    /*** WorkItemHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *Invoke)(
        WorkItemHandler* This,
        IAsyncAction *operation);

    END_INTERFACE
} WorkItemHandlerVtbl;
interface WorkItemHandler {
    CONST_VTBL WorkItemHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define WorkItemHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define WorkItemHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define WorkItemHandler_Release(This) (This)->lpVtbl->Release(This)
/*** WorkItemHandler methods ***/
#define WorkItemHandler_Invoke(This,operation) (This)->lpVtbl->Invoke(This,operation)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT WorkItemHandler_QueryInterface(WorkItemHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG WorkItemHandler_AddRef(WorkItemHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG WorkItemHandler_Release(WorkItemHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** WorkItemHandler methods ***/
static FORCEINLINE HRESULT WorkItemHandler_Invoke(WorkItemHandler* This,IAsyncAction *operation) {
    return This->lpVtbl->Invoke(This,operation);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE WorkItemHandler_Invoke_Proxy(
    WorkItemHandler* This,
    IAsyncAction *operation);
void __RPC_STUB WorkItemHandler_Invoke_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __WorkItemHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IThreadPoolStatics interface
 */
#ifndef __IThreadPoolStatics_INTERFACE_DEFINED__
#define __IThreadPoolStatics_INTERFACE_DEFINED__

DEFINE_GUID(IID_IThreadPoolStatics, 0xb6bf67dd, 0x84bd, 0x44f8, 0xac,0x1c, 0x93,0xeb,0xcb,0x9d,0xba,0x91);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b6bf67dd-84bd-44f8-ac1c-93ebcb9dba91")
IThreadPoolStatics : public IInspectable
{
    virtual HRESULT STDMETHODCALLTYPE RunAsync(
        WorkItemHandler *handler,
        IAsyncAction **operation) = 0;

    virtual HRESULT STDMETHODCALLTYPE RunWithPriorityAsync(
        WorkItemHandler *handler,
        WorkItemPriority priority,
        IAsyncAction **operation) = 0;

    virtual HRESULT STDMETHODCALLTYPE RunWithPriorityAndOptionsAsync(
        WorkItemHandler *handler,
        WorkItemPriority priority,
        WorkItemOptions options,
        IAsyncAction **operation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IThreadPoolStatics, 0xb6bf67dd, 0x84bd, 0x44f8, 0xac,0x1c, 0x93,0xeb,0xcb,0x9d,0xba,0x91)
#endif
#else
typedef struct IThreadPoolStaticsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IThreadPoolStatics* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IThreadPoolStatics* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IThreadPoolStatics* This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        IThreadPoolStatics* This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        IThreadPoolStatics* This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        IThreadPoolStatics* This,
        TrustLevel *trustLevel);

    /*** IThreadPoolStatics methods ***/
    HRESULT (STDMETHODCALLTYPE *RunAsync)(
        IThreadPoolStatics* This,
        WorkItemHandler *handler,
        IAsyncAction **operation);

    HRESULT (STDMETHODCALLTYPE *RunWithPriorityAsync)(
        IThreadPoolStatics* This,
        WorkItemHandler *handler,
        WorkItemPriority priority,
        IAsyncAction **operation);

    HRESULT (STDMETHODCALLTYPE *RunWithPriorityAndOptionsAsync)(
        IThreadPoolStatics* This,
        WorkItemHandler *handler,
        WorkItemPriority priority,
        WorkItemOptions options,
        IAsyncAction **operation);

    END_INTERFACE
} IThreadPoolStaticsVtbl;
interface IThreadPoolStatics {
    CONST_VTBL IThreadPoolStaticsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IThreadPoolStatics_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IThreadPoolStatics_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IThreadPoolStatics_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define IThreadPoolStatics_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define IThreadPoolStatics_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define IThreadPoolStatics_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IThreadPoolStatics methods ***/
#define IThreadPoolStatics_RunAsync(This,handler,operation) (This)->lpVtbl->RunAsync(This,handler,operation)
#define IThreadPoolStatics_RunWithPriorityAsync(This,handler,priority,operation) (This)->lpVtbl->RunWithPriorityAsync(This,handler,priority,operation)
#define IThreadPoolStatics_RunWithPriorityAndOptionsAsync(This,handler,priority,options,operation) (This)->lpVtbl->RunWithPriorityAndOptionsAsync(This,handler,priority,options,operation)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IThreadPoolStatics_QueryInterface(IThreadPoolStatics* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IThreadPoolStatics_AddRef(IThreadPoolStatics* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IThreadPoolStatics_Release(IThreadPoolStatics* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static FORCEINLINE HRESULT IThreadPoolStatics_GetIids(IThreadPoolStatics* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static FORCEINLINE HRESULT IThreadPoolStatics_GetRuntimeClassName(IThreadPoolStatics* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static FORCEINLINE HRESULT IThreadPoolStatics_GetTrustLevel(IThreadPoolStatics* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IThreadPoolStatics methods ***/
static FORCEINLINE HRESULT IThreadPoolStatics_RunAsync(IThreadPoolStatics* This,WorkItemHandler *handler,IAsyncAction **operation) {
    return This->lpVtbl->RunAsync(This,handler,operation);
}
static FORCEINLINE HRESULT IThreadPoolStatics_RunWithPriorityAsync(IThreadPoolStatics* This,WorkItemHandler *handler,WorkItemPriority priority,IAsyncAction **operation) {
    return This->lpVtbl->RunWithPriorityAsync(This,handler,priority,operation);
}
static FORCEINLINE HRESULT IThreadPoolStatics_RunWithPriorityAndOptionsAsync(IThreadPoolStatics* This,WorkItemHandler *handler,WorkItemPriority priority,WorkItemOptions options,IAsyncAction **operation) {
    return This->lpVtbl->RunWithPriorityAndOptionsAsync(This,handler,priority,options,operation);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IThreadPoolStatics_RunAsync_Proxy(
    IThreadPoolStatics* This,
    WorkItemHandler *handler,
    IAsyncAction **operation);
void __RPC_STUB IThreadPoolStatics_RunAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IThreadPoolStatics_RunWithPriorityAsync_Proxy(
    IThreadPoolStatics* This,
    WorkItemHandler *handler,
    WorkItemPriority priority,
    IAsyncAction **operation);
void __RPC_STUB IThreadPoolStatics_RunWithPriorityAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IThreadPoolStatics_RunWithPriorityAndOptionsAsync_Proxy(
    IThreadPoolStatics* This,
    WorkItemHandler *handler,
    WorkItemPriority priority,
    WorkItemOptions options,
    IAsyncAction **operation);
void __RPC_STUB IThreadPoolStatics_RunWithPriorityAndOptionsAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IThreadPoolStatics_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IThreadPoolTimer interface
 */
#ifndef __IThreadPoolTimer_INTERFACE_DEFINED__
#define __IThreadPoolTimer_INTERFACE_DEFINED__

DEFINE_GUID(IID_IThreadPoolTimer, 0x594ebe78, 0x55ea, 0x4a88, 0xa5,0x0d, 0x34,0x02,0xae,0x1f,0x9c,0xf2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("594ebe78-55ea-4a88-a50d-3402ae1f9cf2")
IThreadPoolTimer : public IInspectable
{
    virtual HRESULT STDMETHODCALLTYPE get_Period(
        TimeSpan *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Delay(
        TimeSpan *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE Cancel(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IThreadPoolTimer, 0x594ebe78, 0x55ea, 0x4a88, 0xa5,0x0d, 0x34,0x02,0xae,0x1f,0x9c,0xf2)
#endif
#else
typedef struct IThreadPoolTimerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IThreadPoolTimer* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IThreadPoolTimer* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IThreadPoolTimer* This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        IThreadPoolTimer* This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        IThreadPoolTimer* This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        IThreadPoolTimer* This,
        TrustLevel *trustLevel);

    /*** IThreadPoolTimer methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Period)(
        IThreadPoolTimer* This,
        TimeSpan *value);

    HRESULT (STDMETHODCALLTYPE *get_Delay)(
        IThreadPoolTimer* This,
        TimeSpan *value);

    HRESULT (STDMETHODCALLTYPE *Cancel)(
        IThreadPoolTimer* This);

    END_INTERFACE
} IThreadPoolTimerVtbl;
interface IThreadPoolTimer {
    CONST_VTBL IThreadPoolTimerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IThreadPoolTimer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IThreadPoolTimer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IThreadPoolTimer_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define IThreadPoolTimer_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define IThreadPoolTimer_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define IThreadPoolTimer_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IThreadPoolTimer methods ***/
#define IThreadPoolTimer_get_Period(This,value) (This)->lpVtbl->get_Period(This,value)
#define IThreadPoolTimer_get_Delay(This,value) (This)->lpVtbl->get_Delay(This,value)
#define IThreadPoolTimer_Cancel(This) (This)->lpVtbl->Cancel(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IThreadPoolTimer_QueryInterface(IThreadPoolTimer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IThreadPoolTimer_AddRef(IThreadPoolTimer* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IThreadPoolTimer_Release(IThreadPoolTimer* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static FORCEINLINE HRESULT IThreadPoolTimer_GetIids(IThreadPoolTimer* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static FORCEINLINE HRESULT IThreadPoolTimer_GetRuntimeClassName(IThreadPoolTimer* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static FORCEINLINE HRESULT IThreadPoolTimer_GetTrustLevel(IThreadPoolTimer* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IThreadPoolTimer methods ***/
static FORCEINLINE HRESULT IThreadPoolTimer_get_Period(IThreadPoolTimer* This,TimeSpan *value) {
    return This->lpVtbl->get_Period(This,value);
}
static FORCEINLINE HRESULT IThreadPoolTimer_get_Delay(IThreadPoolTimer* This,TimeSpan *value) {
    return This->lpVtbl->get_Delay(This,value);
}
static FORCEINLINE HRESULT IThreadPoolTimer_Cancel(IThreadPoolTimer* This) {
    return This->lpVtbl->Cancel(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IThreadPoolTimer_get_Period_Proxy(
    IThreadPoolTimer* This,
    TimeSpan *value);
void __RPC_STUB IThreadPoolTimer_get_Period_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IThreadPoolTimer_get_Delay_Proxy(
    IThreadPoolTimer* This,
    TimeSpan *value);
void __RPC_STUB IThreadPoolTimer_get_Delay_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IThreadPoolTimer_Cancel_Proxy(
    IThreadPoolTimer* This);
void __RPC_STUB IThreadPoolTimer_Cancel_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IThreadPoolTimer_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IThreadPoolTimerStatics interface
 */
#ifndef __IThreadPoolTimerStatics_INTERFACE_DEFINED__
#define __IThreadPoolTimerStatics_INTERFACE_DEFINED__

DEFINE_GUID(IID_IThreadPoolTimerStatics, 0x1a8a9d02, 0xe482, 0x461b, 0xb8,0xc7, 0x8e,0xfa,0xd1,0xcc,0xe5,0x90);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1a8a9d02-e482-461b-b8c7-8efad1cce590")
IThreadPoolTimerStatics : public IInspectable
{
    virtual HRESULT STDMETHODCALLTYPE CreatePeriodicTimer(
        TimerElapsedHandler *handler,
        TimeSpan period,
        IThreadPoolTimer **timer) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTimer(
        TimerElapsedHandler *handler,
        TimeSpan delay,
        IThreadPoolTimer **timer) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePeriodicTimerWithCompletion(
        TimerElapsedHandler *handler,
        TimeSpan period,
        TimerDestroyedHandler *destroyed,
        IThreadPoolTimer **timer) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateTimerWithCompletion(
        TimerElapsedHandler *handler,
        TimeSpan delay,
        TimerDestroyedHandler *destroyed,
        IThreadPoolTimer **timer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IThreadPoolTimerStatics, 0x1a8a9d02, 0xe482, 0x461b, 0xb8,0xc7, 0x8e,0xfa,0xd1,0xcc,0xe5,0x90)
#endif
#else
typedef struct IThreadPoolTimerStaticsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IThreadPoolTimerStatics* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IThreadPoolTimerStatics* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IThreadPoolTimerStatics* This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        IThreadPoolTimerStatics* This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        IThreadPoolTimerStatics* This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        IThreadPoolTimerStatics* This,
        TrustLevel *trustLevel);

    /*** IThreadPoolTimerStatics methods ***/
    HRESULT (STDMETHODCALLTYPE *CreatePeriodicTimer)(
        IThreadPoolTimerStatics* This,
        TimerElapsedHandler *handler,
        TimeSpan period,
        IThreadPoolTimer **timer);

    HRESULT (STDMETHODCALLTYPE *CreateTimer)(
        IThreadPoolTimerStatics* This,
        TimerElapsedHandler *handler,
        TimeSpan delay,
        IThreadPoolTimer **timer);

    HRESULT (STDMETHODCALLTYPE *CreatePeriodicTimerWithCompletion)(
        IThreadPoolTimerStatics* This,
        TimerElapsedHandler *handler,
        TimeSpan period,
        TimerDestroyedHandler *destroyed,
        IThreadPoolTimer **timer);

    HRESULT (STDMETHODCALLTYPE *CreateTimerWithCompletion)(
        IThreadPoolTimerStatics* This,
        TimerElapsedHandler *handler,
        TimeSpan delay,
        TimerDestroyedHandler *destroyed,
        IThreadPoolTimer **timer);

    END_INTERFACE
} IThreadPoolTimerStaticsVtbl;
interface IThreadPoolTimerStatics {
    CONST_VTBL IThreadPoolTimerStaticsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IThreadPoolTimerStatics_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IThreadPoolTimerStatics_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IThreadPoolTimerStatics_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define IThreadPoolTimerStatics_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define IThreadPoolTimerStatics_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define IThreadPoolTimerStatics_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IThreadPoolTimerStatics methods ***/
#define IThreadPoolTimerStatics_CreatePeriodicTimer(This,handler,period,timer) (This)->lpVtbl->CreatePeriodicTimer(This,handler,period,timer)
#define IThreadPoolTimerStatics_CreateTimer(This,handler,delay,timer) (This)->lpVtbl->CreateTimer(This,handler,delay,timer)
#define IThreadPoolTimerStatics_CreatePeriodicTimerWithCompletion(This,handler,period,destroyed,timer) (This)->lpVtbl->CreatePeriodicTimerWithCompletion(This,handler,period,destroyed,timer)
#define IThreadPoolTimerStatics_CreateTimerWithCompletion(This,handler,delay,destroyed,timer) (This)->lpVtbl->CreateTimerWithCompletion(This,handler,delay,destroyed,timer)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IThreadPoolTimerStatics_QueryInterface(IThreadPoolTimerStatics* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IThreadPoolTimerStatics_AddRef(IThreadPoolTimerStatics* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IThreadPoolTimerStatics_Release(IThreadPoolTimerStatics* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static FORCEINLINE HRESULT IThreadPoolTimerStatics_GetIids(IThreadPoolTimerStatics* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static FORCEINLINE HRESULT IThreadPoolTimerStatics_GetRuntimeClassName(IThreadPoolTimerStatics* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static FORCEINLINE HRESULT IThreadPoolTimerStatics_GetTrustLevel(IThreadPoolTimerStatics* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IThreadPoolTimerStatics methods ***/
static FORCEINLINE HRESULT IThreadPoolTimerStatics_CreatePeriodicTimer(IThreadPoolTimerStatics* This,TimerElapsedHandler *handler,TimeSpan period,IThreadPoolTimer **timer) {
    return This->lpVtbl->CreatePeriodicTimer(This,handler,period,timer);
}
static FORCEINLINE HRESULT IThreadPoolTimerStatics_CreateTimer(IThreadPoolTimerStatics* This,TimerElapsedHandler *handler,TimeSpan delay,IThreadPoolTimer **timer) {
    return This->lpVtbl->CreateTimer(This,handler,delay,timer);
}
static FORCEINLINE HRESULT IThreadPoolTimerStatics_CreatePeriodicTimerWithCompletion(IThreadPoolTimerStatics* This,TimerElapsedHandler *handler,TimeSpan period,TimerDestroyedHandler *destroyed,IThreadPoolTimer **timer) {
    return This->lpVtbl->CreatePeriodicTimerWithCompletion(This,handler,period,destroyed,timer);
}
static FORCEINLINE HRESULT IThreadPoolTimerStatics_CreateTimerWithCompletion(IThreadPoolTimerStatics* This,TimerElapsedHandler *handler,TimeSpan delay,TimerDestroyedHandler *destroyed,IThreadPoolTimer **timer) {
    return This->lpVtbl->CreateTimerWithCompletion(This,handler,delay,destroyed,timer);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IThreadPoolTimerStatics_CreatePeriodicTimer_Proxy(
    IThreadPoolTimerStatics* This,
    TimerElapsedHandler *handler,
    TimeSpan period,
    IThreadPoolTimer **timer);
void __RPC_STUB IThreadPoolTimerStatics_CreatePeriodicTimer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IThreadPoolTimerStatics_CreateTimer_Proxy(
    IThreadPoolTimerStatics* This,
    TimerElapsedHandler *handler,
    TimeSpan delay,
    IThreadPoolTimer **timer);
void __RPC_STUB IThreadPoolTimerStatics_CreateTimer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IThreadPoolTimerStatics_CreatePeriodicTimerWithCompletion_Proxy(
    IThreadPoolTimerStatics* This,
    TimerElapsedHandler *handler,
    TimeSpan period,
    TimerDestroyedHandler *destroyed,
    IThreadPoolTimer **timer);
void __RPC_STUB IThreadPoolTimerStatics_CreatePeriodicTimerWithCompletion_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IThreadPoolTimerStatics_CreateTimerWithCompletion_Proxy(
    IThreadPoolTimerStatics* This,
    TimerElapsedHandler *handler,
    TimeSpan delay,
    TimerDestroyedHandler *destroyed,
    IThreadPoolTimer **timer);
void __RPC_STUB IThreadPoolTimerStatics_CreateTimerWithCompletion_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IThreadPoolTimerStatics_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __windows_system_threading_h__ */
