1 /*** Autogenerated by WIDL 6.4 from include/rtworkq.idl - Do not edit ***/
2 
3 #ifdef _WIN32
4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
6 #endif
7 #include <rpc.h>
8 #include <rpcndr.h>
9 #endif
10 
11 #ifndef COM_NO_WINDOWS_H
12 #include <windows.h>
13 #include <ole2.h>
14 #endif
15 
16 #ifndef __rtworkq_h__
17 #define __rtworkq_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IRtwqAsyncResult_FWD_DEFINED__
22 #define __IRtwqAsyncResult_FWD_DEFINED__
23 typedef interface IRtwqAsyncResult IRtwqAsyncResult;
24 #ifdef __cplusplus
25 interface IRtwqAsyncResult;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IRtwqAsyncCallback_FWD_DEFINED__
30 #define __IRtwqAsyncCallback_FWD_DEFINED__
31 typedef interface IRtwqAsyncCallback IRtwqAsyncCallback;
32 #ifdef __cplusplus
33 interface IRtwqAsyncCallback;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IRtwqPlatformEvents_FWD_DEFINED__
38 #define __IRtwqPlatformEvents_FWD_DEFINED__
39 typedef interface IRtwqPlatformEvents IRtwqPlatformEvents;
40 #ifdef __cplusplus
41 interface IRtwqPlatformEvents;
42 #endif /* __cplusplus */
43 #endif
44 
45 /* Headers for imported files */
46 
47 #include <unknwn.h>
48 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52 
53 typedef enum __WIDL_rtworkq_generated_name_0000000C {
54     RTWQ_STANDARD_WORKQUEUE = 0,
55     RTWQ_WINDOW_WORKQUEUE = 1,
56     RTWQ_MULTITHREADED_WORKQUEUE = 2
57 } RTWQ_WORKQUEUE_TYPE;
58 typedef UINT64 RTWQWORKITEM_KEY;
59 /*****************************************************************************
60  * IRtwqAsyncResult interface
61  */
62 #ifndef __IRtwqAsyncResult_INTERFACE_DEFINED__
63 #define __IRtwqAsyncResult_INTERFACE_DEFINED__
64 
65 DEFINE_GUID(IID_IRtwqAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6);
66 #if defined(__cplusplus) && !defined(CINTERFACE)
67 MIDL_INTERFACE("ac6b7889-0740-4d51-8619-905994a55cc6")
68 IRtwqAsyncResult : public IUnknown
69 {
70     virtual HRESULT STDMETHODCALLTYPE GetState(
71         IUnknown **state) = 0;
72 
73     virtual HRESULT STDMETHODCALLTYPE GetStatus(
74         ) = 0;
75 
76     virtual HRESULT STDMETHODCALLTYPE SetStatus(
77         HRESULT status) = 0;
78 
79     virtual HRESULT STDMETHODCALLTYPE GetObject(
80         IUnknown **object) = 0;
81 
82     virtual IUnknown * STDMETHODCALLTYPE GetStateNoAddRef(
83         ) = 0;
84 
85 };
86 #ifdef __CRT_UUID_DECL
87 __CRT_UUID_DECL(IRtwqAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6)
88 #endif
89 #else
90 typedef struct IRtwqAsyncResultVtbl {
91     BEGIN_INTERFACE
92 
93     /*** IUnknown methods ***/
94     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
95         IRtwqAsyncResult *This,
96         REFIID riid,
97         void **ppvObject);
98 
99     ULONG (STDMETHODCALLTYPE *AddRef)(
100         IRtwqAsyncResult *This);
101 
102     ULONG (STDMETHODCALLTYPE *Release)(
103         IRtwqAsyncResult *This);
104 
105     /*** IRtwqAsyncResult methods ***/
106     HRESULT (STDMETHODCALLTYPE *GetState)(
107         IRtwqAsyncResult *This,
108         IUnknown **state);
109 
110     HRESULT (STDMETHODCALLTYPE *GetStatus)(
111         IRtwqAsyncResult *This);
112 
113     HRESULT (STDMETHODCALLTYPE *SetStatus)(
114         IRtwqAsyncResult *This,
115         HRESULT status);
116 
117     HRESULT (STDMETHODCALLTYPE *GetObject)(
118         IRtwqAsyncResult *This,
119         IUnknown **object);
120 
121     IUnknown * (STDMETHODCALLTYPE *GetStateNoAddRef)(
122         IRtwqAsyncResult *This);
123 
124     END_INTERFACE
125 } IRtwqAsyncResultVtbl;
126 
127 interface IRtwqAsyncResult {
128     CONST_VTBL IRtwqAsyncResultVtbl* lpVtbl;
129 };
130 
131 #ifdef COBJMACROS
132 #ifndef WIDL_C_INLINE_WRAPPERS
133 /*** IUnknown methods ***/
134 #define IRtwqAsyncResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
135 #define IRtwqAsyncResult_AddRef(This) (This)->lpVtbl->AddRef(This)
136 #define IRtwqAsyncResult_Release(This) (This)->lpVtbl->Release(This)
137 /*** IRtwqAsyncResult methods ***/
138 #define IRtwqAsyncResult_GetState(This,state) (This)->lpVtbl->GetState(This,state)
139 #define IRtwqAsyncResult_GetStatus(This) (This)->lpVtbl->GetStatus(This)
140 #define IRtwqAsyncResult_SetStatus(This,status) (This)->lpVtbl->SetStatus(This,status)
141 #define IRtwqAsyncResult_GetObject(This,object) (This)->lpVtbl->GetObject(This,object)
142 #define IRtwqAsyncResult_GetStateNoAddRef(This) (This)->lpVtbl->GetStateNoAddRef(This)
143 #else
144 /*** IUnknown methods ***/
145 static FORCEINLINE HRESULT IRtwqAsyncResult_QueryInterface(IRtwqAsyncResult* This,REFIID riid,void **ppvObject) {
146     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
147 }
148 static FORCEINLINE ULONG IRtwqAsyncResult_AddRef(IRtwqAsyncResult* This) {
149     return This->lpVtbl->AddRef(This);
150 }
151 static FORCEINLINE ULONG IRtwqAsyncResult_Release(IRtwqAsyncResult* This) {
152     return This->lpVtbl->Release(This);
153 }
154 /*** IRtwqAsyncResult methods ***/
155 static FORCEINLINE HRESULT IRtwqAsyncResult_GetState(IRtwqAsyncResult* This,IUnknown **state) {
156     return This->lpVtbl->GetState(This,state);
157 }
158 static FORCEINLINE HRESULT IRtwqAsyncResult_GetStatus(IRtwqAsyncResult* This) {
159     return This->lpVtbl->GetStatus(This);
160 }
161 static FORCEINLINE HRESULT IRtwqAsyncResult_SetStatus(IRtwqAsyncResult* This,HRESULT status) {
162     return This->lpVtbl->SetStatus(This,status);
163 }
164 static FORCEINLINE HRESULT IRtwqAsyncResult_GetObject(IRtwqAsyncResult* This,IUnknown **object) {
165     return This->lpVtbl->GetObject(This,object);
166 }
167 static FORCEINLINE IUnknown * IRtwqAsyncResult_GetStateNoAddRef(IRtwqAsyncResult* This) {
168     return This->lpVtbl->GetStateNoAddRef(This);
169 }
170 #endif
171 #endif
172 
173 #endif
174 
175 
176 #endif  /* __IRtwqAsyncResult_INTERFACE_DEFINED__ */
177 
178 /*****************************************************************************
179  * IRtwqAsyncCallback interface
180  */
181 #ifndef __IRtwqAsyncCallback_INTERFACE_DEFINED__
182 #define __IRtwqAsyncCallback_INTERFACE_DEFINED__
183 
184 DEFINE_GUID(IID_IRtwqAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e);
185 #if defined(__cplusplus) && !defined(CINTERFACE)
186 MIDL_INTERFACE("a27003cf-2354-4f2a-8d6a-ab7cff15437e")
187 IRtwqAsyncCallback : public IUnknown
188 {
189     virtual HRESULT STDMETHODCALLTYPE GetParameters(
190         DWORD *flags,
191         DWORD *queue) = 0;
192 
193     virtual HRESULT STDMETHODCALLTYPE Invoke(
194         IRtwqAsyncResult *result) = 0;
195 
196 };
197 #ifdef __CRT_UUID_DECL
198 __CRT_UUID_DECL(IRtwqAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e)
199 #endif
200 #else
201 typedef struct IRtwqAsyncCallbackVtbl {
202     BEGIN_INTERFACE
203 
204     /*** IUnknown methods ***/
205     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
206         IRtwqAsyncCallback *This,
207         REFIID riid,
208         void **ppvObject);
209 
210     ULONG (STDMETHODCALLTYPE *AddRef)(
211         IRtwqAsyncCallback *This);
212 
213     ULONG (STDMETHODCALLTYPE *Release)(
214         IRtwqAsyncCallback *This);
215 
216     /*** IRtwqAsyncCallback methods ***/
217     HRESULT (STDMETHODCALLTYPE *GetParameters)(
218         IRtwqAsyncCallback *This,
219         DWORD *flags,
220         DWORD *queue);
221 
222     HRESULT (STDMETHODCALLTYPE *Invoke)(
223         IRtwqAsyncCallback *This,
224         IRtwqAsyncResult *result);
225 
226     END_INTERFACE
227 } IRtwqAsyncCallbackVtbl;
228 
229 interface IRtwqAsyncCallback {
230     CONST_VTBL IRtwqAsyncCallbackVtbl* lpVtbl;
231 };
232 
233 #ifdef COBJMACROS
234 #ifndef WIDL_C_INLINE_WRAPPERS
235 /*** IUnknown methods ***/
236 #define IRtwqAsyncCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
237 #define IRtwqAsyncCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
238 #define IRtwqAsyncCallback_Release(This) (This)->lpVtbl->Release(This)
239 /*** IRtwqAsyncCallback methods ***/
240 #define IRtwqAsyncCallback_GetParameters(This,flags,queue) (This)->lpVtbl->GetParameters(This,flags,queue)
241 #define IRtwqAsyncCallback_Invoke(This,result) (This)->lpVtbl->Invoke(This,result)
242 #else
243 /*** IUnknown methods ***/
244 static FORCEINLINE HRESULT IRtwqAsyncCallback_QueryInterface(IRtwqAsyncCallback* This,REFIID riid,void **ppvObject) {
245     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
246 }
247 static FORCEINLINE ULONG IRtwqAsyncCallback_AddRef(IRtwqAsyncCallback* This) {
248     return This->lpVtbl->AddRef(This);
249 }
250 static FORCEINLINE ULONG IRtwqAsyncCallback_Release(IRtwqAsyncCallback* This) {
251     return This->lpVtbl->Release(This);
252 }
253 /*** IRtwqAsyncCallback methods ***/
254 static FORCEINLINE HRESULT IRtwqAsyncCallback_GetParameters(IRtwqAsyncCallback* This,DWORD *flags,DWORD *queue) {
255     return This->lpVtbl->GetParameters(This,flags,queue);
256 }
257 static FORCEINLINE HRESULT IRtwqAsyncCallback_Invoke(IRtwqAsyncCallback* This,IRtwqAsyncResult *result) {
258     return This->lpVtbl->Invoke(This,result);
259 }
260 #endif
261 #endif
262 
263 #endif
264 
265 
266 #endif  /* __IRtwqAsyncCallback_INTERFACE_DEFINED__ */
267 
268 /*****************************************************************************
269  * IRtwqPlatformEvents interface
270  */
271 #ifndef __IRtwqPlatformEvents_INTERFACE_DEFINED__
272 #define __IRtwqPlatformEvents_INTERFACE_DEFINED__
273 
274 DEFINE_GUID(IID_IRtwqPlatformEvents, 0x63d9255a, 0x7ff1, 0x4b61, 0x8f,0xaf, 0xed,0x64,0x60,0xda,0xcf,0x2b);
275 #if defined(__cplusplus) && !defined(CINTERFACE)
276 MIDL_INTERFACE("63d9255a-7ff1-4b61-8faf-ed6460dacf2b")
277 IRtwqPlatformEvents : public IUnknown
278 {
279     virtual HRESULT STDMETHODCALLTYPE InitializationComplete(
280         ) = 0;
281 
282     virtual HRESULT STDMETHODCALLTYPE ShutdownStart(
283         ) = 0;
284 
285     virtual HRESULT STDMETHODCALLTYPE ShutdownComplete(
286         ) = 0;
287 
288 };
289 #ifdef __CRT_UUID_DECL
290 __CRT_UUID_DECL(IRtwqPlatformEvents, 0x63d9255a, 0x7ff1, 0x4b61, 0x8f,0xaf, 0xed,0x64,0x60,0xda,0xcf,0x2b)
291 #endif
292 #else
293 typedef struct IRtwqPlatformEventsVtbl {
294     BEGIN_INTERFACE
295 
296     /*** IUnknown methods ***/
297     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
298         IRtwqPlatformEvents *This,
299         REFIID riid,
300         void **ppvObject);
301 
302     ULONG (STDMETHODCALLTYPE *AddRef)(
303         IRtwqPlatformEvents *This);
304 
305     ULONG (STDMETHODCALLTYPE *Release)(
306         IRtwqPlatformEvents *This);
307 
308     /*** IRtwqPlatformEvents methods ***/
309     HRESULT (STDMETHODCALLTYPE *InitializationComplete)(
310         IRtwqPlatformEvents *This);
311 
312     HRESULT (STDMETHODCALLTYPE *ShutdownStart)(
313         IRtwqPlatformEvents *This);
314 
315     HRESULT (STDMETHODCALLTYPE *ShutdownComplete)(
316         IRtwqPlatformEvents *This);
317 
318     END_INTERFACE
319 } IRtwqPlatformEventsVtbl;
320 
321 interface IRtwqPlatformEvents {
322     CONST_VTBL IRtwqPlatformEventsVtbl* lpVtbl;
323 };
324 
325 #ifdef COBJMACROS
326 #ifndef WIDL_C_INLINE_WRAPPERS
327 /*** IUnknown methods ***/
328 #define IRtwqPlatformEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
329 #define IRtwqPlatformEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
330 #define IRtwqPlatformEvents_Release(This) (This)->lpVtbl->Release(This)
331 /*** IRtwqPlatformEvents methods ***/
332 #define IRtwqPlatformEvents_InitializationComplete(This) (This)->lpVtbl->InitializationComplete(This)
333 #define IRtwqPlatformEvents_ShutdownStart(This) (This)->lpVtbl->ShutdownStart(This)
334 #define IRtwqPlatformEvents_ShutdownComplete(This) (This)->lpVtbl->ShutdownComplete(This)
335 #else
336 /*** IUnknown methods ***/
337 static FORCEINLINE HRESULT IRtwqPlatformEvents_QueryInterface(IRtwqPlatformEvents* This,REFIID riid,void **ppvObject) {
338     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
339 }
340 static FORCEINLINE ULONG IRtwqPlatformEvents_AddRef(IRtwqPlatformEvents* This) {
341     return This->lpVtbl->AddRef(This);
342 }
343 static FORCEINLINE ULONG IRtwqPlatformEvents_Release(IRtwqPlatformEvents* This) {
344     return This->lpVtbl->Release(This);
345 }
346 /*** IRtwqPlatformEvents methods ***/
347 static FORCEINLINE HRESULT IRtwqPlatformEvents_InitializationComplete(IRtwqPlatformEvents* This) {
348     return This->lpVtbl->InitializationComplete(This);
349 }
350 static FORCEINLINE HRESULT IRtwqPlatformEvents_ShutdownStart(IRtwqPlatformEvents* This) {
351     return This->lpVtbl->ShutdownStart(This);
352 }
353 static FORCEINLINE HRESULT IRtwqPlatformEvents_ShutdownComplete(IRtwqPlatformEvents* This) {
354     return This->lpVtbl->ShutdownComplete(This);
355 }
356 #endif
357 #endif
358 
359 #endif
360 
361 
362 #endif  /* __IRtwqPlatformEvents_INTERFACE_DEFINED__ */
363 
364 #define RTWQ_E_ERROR(x)            ((HRESULT)(0xc00d0000L+x))
365 #define RTWQ_E_BUFFERTOOSMALL      RTWQ_E_ERROR(14001)
366 #define RTWQ_E_NOT_INITIALIZED     RTWQ_E_ERROR(14006)
367 #define RTWQ_E_UNEXPECTED          RTWQ_E_ERROR(14011)
368 #define RTWQ_E_NOT_FOUND           RTWQ_E_ERROR(14037)
369 #define RTWQ_E_OPERATION_CANCELLED RTWQ_E_ERROR(14061)
370 #define RTWQ_E_INVALID_WORKQUEUE   RTWQ_E_ERROR(14079)
371 #define RTWQ_E_SHUTDOWN            RTWQ_E_ERROR(16005)
372 #ifdef __WINESRC__
373 typedef struct tagRTWQASYNCRESULT
374 {
375     IRtwqAsyncResult AsyncResult;
376 #else
377 typedef struct tagRTWQASYNCRESULT : public IRtwqAsyncResult {
378 #endif
379     OVERLAPPED overlapped;
380     IRtwqAsyncCallback *pCallback;
381     HRESULT hrStatusResult;
382     DWORD dwBytesTransferred;
383     HANDLE hEvent;
384 } RTWQASYNCRESULT;
385 typedef void (WINAPI *RTWQPERIODICCALLBACK)(IUnknown *context);
386 HRESULT WINAPI RtwqAddPeriodicCallback(RTWQPERIODICCALLBACK callback, IUnknown *context, DWORD *key);
387 HRESULT WINAPI RtwqAllocateSerialWorkQueue(DWORD target_queue, DWORD *queue);
388 HRESULT WINAPI RtwqAllocateWorkQueue(RTWQ_WORKQUEUE_TYPE queue_type, DWORD *queue);
389 HRESULT WINAPI RtwqBeginRegisterWorkQueueWithMMCSS(DWORD queue, const WCHAR *mmcss_class, DWORD taskid, LONG priority, IRtwqAsyncCallback *callback, IUnknown *state);
390 HRESULT WINAPI RtwqBeginUnregisterWorkQueueWithMMCSS(DWORD queue, IRtwqAsyncCallback *callback, IUnknown *state);
391 HRESULT WINAPI RtwqCancelDeadline(HANDLE request);
392 HRESULT WINAPI RtwqCancelWorkItem(RTWQWORKITEM_KEY key);
393 HRESULT WINAPI RtwqCreateAsyncResult(IUnknown *object, IRtwqAsyncCallback *callback, IUnknown *state, IRtwqAsyncResult **result);
394 HRESULT WINAPI RtwqEndRegisterWorkQueueWithMMCSS(IRtwqAsyncResult *result, DWORD *taskid);
395 HRESULT WINAPI RtwqGetWorkQueueMMCSSClass(DWORD queue, WCHAR *mmcss_class, DWORD *length);
396 HRESULT WINAPI RtwqGetWorkQueueMMCSSPriority(DWORD queue, LONG *priority);
397 HRESULT WINAPI RtwqGetWorkQueueMMCSSTaskId(DWORD queue, DWORD *taskid);
398 HRESULT WINAPI RtwqInvokeCallback(IRtwqAsyncResult *result);
399 HRESULT WINAPI RtwqJoinWorkQueue(DWORD queue, HANDLE hFile, HANDLE *cookie);
400 HRESULT WINAPI RtwqLockPlatform(void);
401 HRESULT WINAPI RtwqLockSharedWorkQueue(const WCHAR *usageclass, LONG priority, DWORD *taskid, DWORD *queue);
402 HRESULT WINAPI RtwqLockWorkQueue(DWORD queue);
403 HRESULT WINAPI RtwqPutWaitingWorkItem(HANDLE event, LONG priority, IRtwqAsyncResult *result, RTWQWORKITEM_KEY *key);
404 HRESULT WINAPI RtwqPutWorkItem(DWORD queue, LONG priority, IRtwqAsyncResult *result);
405 HRESULT WINAPI RtwqRegisterPlatformEvents(IRtwqPlatformEvents *events);
406 HRESULT WINAPI RtwqRegisterPlatformWithMMCSS(const WCHAR *mmcss_class, DWORD *taskid, LONG priority);
407 HRESULT WINAPI RtwqRemovePeriodicCallback(DWORD key);
408 HRESULT WINAPI RtwqScheduleWorkItem(IRtwqAsyncResult *result, INT64 timeout, RTWQWORKITEM_KEY *key);
409 HRESULT WINAPI RtwqSetDeadline(DWORD queue_id, LONGLONG deadline, HANDLE *request);
410 HRESULT WINAPI RtwqSetDeadline2(DWORD queue_id, LONGLONG deadline, LONGLONG predeadline, HANDLE *request);
411 HRESULT WINAPI RtwqSetLongRunning(DWORD queue_id, WINBOOL enable);
412 HRESULT WINAPI RtwqShutdown(void);
413 HRESULT WINAPI RtwqStartup(void);
414 HRESULT WINAPI RtwqUnjoinWorkQueue(DWORD queue, HANDLE cookie);
415 HRESULT WINAPI RtwqUnlockPlatform(void);
416 HRESULT WINAPI RtwqUnlockWorkQueue(DWORD queue);
417 HRESULT WINAPI RtwqUnregisterPlatformEvents(IRtwqPlatformEvents *events);
418 HRESULT WINAPI RtwqUnregisterPlatformFromMMCSS(void);
419 /* Begin additional prototypes for all interfaces */
420 
421 
422 /* End additional prototypes */
423 
424 #ifdef __cplusplus
425 }
426 #endif
427 
428 #endif /* __rtworkq_h__ */
429