/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #ifdef __WIDL__ #pragma winrt ns_prefix #endif import "inspectable.idl"; import "windows.foundation.idl"; namespace Windows { namespace Foundation { interface IAsyncAction; } namespace System { namespace Threading { typedef enum WorkItemPriority WorkItemPriority; typedef enum WorkItemOptions WorkItemOptions; interface TimerElapsedHandler; //delegate interface TimerDestroyedHandler; //delegate interface WorkItemHandler; //delegate interface IThreadPoolStatics; interface IThreadPoolTimer; interface IThreadPoolTimerStatics; } } } namespace Windows { namespace System { namespace Threading { enum WorkItemPriority { Low = -1, Normal = 0, High = 1 }; enum WorkItemOptions { None = 0, TimeSliced = 1 }; typedef struct TimeSpan { INT64 Duration; } TimeSpan; [uuid(FAAEA667-FBEB-49CB-ADB2-71184C556E43)] interface TimerElapsedHandler : IUnknown { HRESULT Invoke(IThreadPoolTimer* timer); } [uuid(34ED19FA-8384-4EB9-8209-FB5094EEEC35)] interface TimerDestroyedHandler : IUnknown { HRESULT Invoke(IThreadPoolTimer* timer); } [uuid(1D1A8B8B-FA66-414F-9CBD-B65FC99D17FA)] interface WorkItemHandler : IUnknown { HRESULT Invoke( Windows.Foundation.IAsyncAction* operation); } [uuid(B6BF67DD-84BD-44F8-AC1C-93EBCB9DBA91)] interface IThreadPoolStatics : IInspectable { HRESULT RunAsync( WorkItemHandler* handler, Windows.Foundation.IAsyncAction** operation); HRESULT RunWithPriorityAsync( WorkItemHandler* handler, WorkItemPriority priority, Windows.Foundation.IAsyncAction** operation); HRESULT RunWithPriorityAndOptionsAsync( WorkItemHandler* handler, WorkItemPriority priority, WorkItemOptions options, Windows.Foundation.IAsyncAction** operation); } [uuid(594EBE78-55EA-4A88-A50D-3402AE1F9CF2)] interface IThreadPoolTimer : IInspectable { [propget] HRESULT Period(TimeSpan* value); [propget] HRESULT Delay(TimeSpan* value); HRESULT Cancel(); } [uuid(1A8A9D02-E482-461B-B8C7-8EFAD1CCE590)] interface IThreadPoolTimerStatics : IInspectable { HRESULT CreatePeriodicTimer( TimerElapsedHandler* handler, TimeSpan period, IThreadPoolTimer** timer); HRESULT CreateTimer( TimerElapsedHandler* handler, TimeSpan delay, IThreadPoolTimer** timer); HRESULT CreatePeriodicTimerWithCompletion( TimerElapsedHandler* handler, TimeSpan period, TimerDestroyedHandler* destroyed, IThreadPoolTimer** timer); HRESULT CreateTimerWithCompletion( TimerElapsedHandler* handler, TimeSpan delay, TimerDestroyedHandler* destroyed, IThreadPoolTimer** timer); } } } }