• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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