1/** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 7#ifdef __WIDL__ 8#pragma winrt ns_prefix 9#endif 10 11import "inspectable.idl"; 12import "windows.foundation.idl"; 13 14namespace Windows { 15 namespace Foundation { 16 interface IAsyncAction; 17 struct TimeSpan; 18 } 19 20 namespace System { 21 namespace Threading { 22 enum WorkItemPriority; 23 enum WorkItemOptions; 24 interface TimerElapsedHandler; //delegate 25 interface TimerDestroyedHandler; //delegate 26 interface WorkItemHandler; //delegate 27 interface IThreadPoolStatics; 28 interface IThreadPoolTimer; 29 interface IThreadPoolTimerStatics; 30 } 31 } 32} 33 34namespace Windows { 35 namespace System { 36 namespace Threading 37 { 38 typedef enum WorkItemPriority { 39 Low = -1, 40 Normal = 0, 41 High = 1 42 } WorkItemPriority; 43 44 typedef enum WorkItemOptions { 45 None = 0, 46 TimeSliced = 1 47 } WorkItemOptions; 48 49 typedef struct TimeSpan { 50 INT64 Duration; 51 } TimeSpan; 52 53 [uuid(FAAEA667-FBEB-49CB-ADB2-71184C556E43)] 54 interface TimerElapsedHandler : IUnknown { 55 HRESULT Invoke(IThreadPoolTimer* timer); 56 } 57 58 [uuid(34ED19FA-8384-4EB9-8209-FB5094EEEC35)] 59 interface TimerDestroyedHandler : IUnknown { 60 HRESULT Invoke(IThreadPoolTimer* timer); 61 } 62 63 [uuid(1D1A8B8B-FA66-414F-9CBD-B65FC99D17FA)] 64 interface WorkItemHandler : IUnknown { 65 HRESULT Invoke( 66 IAsyncAction* operation); 67 } 68 69 [uuid(B6BF67DD-84BD-44F8-AC1C-93EBCB9DBA91)] 70 interface IThreadPoolStatics : IInspectable 71 { 72 HRESULT RunAsync( 73 WorkItemHandler* handler, 74 IAsyncAction** operation); 75 76 HRESULT RunWithPriorityAsync( 77 WorkItemHandler* handler, 78 WorkItemPriority priority, 79 IAsyncAction** operation); 80 81 HRESULT RunWithPriorityAndOptionsAsync( 82 WorkItemHandler* handler, 83 WorkItemPriority priority, 84 WorkItemOptions options, 85 IAsyncAction** operation); 86 } 87 88 [uuid(594EBE78-55EA-4A88-A50D-3402AE1F9CF2)] 89 interface IThreadPoolTimer : IInspectable 90 { 91 [propget] HRESULT Period(TimeSpan* value); 92 [propget] HRESULT Delay(TimeSpan* value); 93 HRESULT Cancel(); 94 } 95 96 [uuid(1A8A9D02-E482-461B-B8C7-8EFAD1CCE590)] 97 interface IThreadPoolTimerStatics : IInspectable 98 { 99 HRESULT CreatePeriodicTimer( 100 TimerElapsedHandler* handler, 101 TimeSpan period, 102 IThreadPoolTimer** timer); 103 104 HRESULT CreateTimer( 105 TimerElapsedHandler* handler, 106 TimeSpan delay, 107 IThreadPoolTimer** timer); 108 109 HRESULT CreatePeriodicTimerWithCompletion( 110 TimerElapsedHandler* handler, 111 TimeSpan period, 112 TimerDestroyedHandler* destroyed, 113 IThreadPoolTimer** timer); 114 115 HRESULT CreateTimerWithCompletion( 116 TimerElapsedHandler* handler, 117 TimeSpan delay, 118 TimerDestroyedHandler* destroyed, 119 IThreadPoolTimer** timer); 120 } 121 } 122 } 123} 124