master
  1/*** Autogenerated by WIDL 10.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__
 23typedef interface IRtwqAsyncResult IRtwqAsyncResult;
 24#ifdef __cplusplus
 25interface IRtwqAsyncResult;
 26#endif /* __cplusplus */
 27#endif
 28
 29#ifndef __IRtwqAsyncCallback_FWD_DEFINED__
 30#define __IRtwqAsyncCallback_FWD_DEFINED__
 31typedef interface IRtwqAsyncCallback IRtwqAsyncCallback;
 32#ifdef __cplusplus
 33interface IRtwqAsyncCallback;
 34#endif /* __cplusplus */
 35#endif
 36
 37#ifndef __IRtwqPlatformEvents_FWD_DEFINED__
 38#define __IRtwqPlatformEvents_FWD_DEFINED__
 39typedef interface IRtwqPlatformEvents IRtwqPlatformEvents;
 40#ifdef __cplusplus
 41interface IRtwqPlatformEvents;
 42#endif /* __cplusplus */
 43#endif
 44
 45/* Headers for imported files */
 46
 47#include <unknwn.h>
 48
 49#ifdef __cplusplus
 50extern "C" {
 51#endif
 52
 53typedef 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;
 58typedef UINT64 RTWQWORKITEM_KEY;
 59/*****************************************************************************
 60 * IRtwqAsyncResult interface
 61 */
 62#ifndef __IRtwqAsyncResult_INTERFACE_DEFINED__
 63#define __IRtwqAsyncResult_INTERFACE_DEFINED__
 64
 65DEFINE_GUID(IID_IRtwqAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6);
 66#if defined(__cplusplus) && !defined(CINTERFACE)
 67MIDL_INTERFACE("ac6b7889-0740-4d51-8619-905994a55cc6")
 68IRtwqAsyncResult : 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
 90typedef 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
127interface 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 ***/
145static inline HRESULT IRtwqAsyncResult_QueryInterface(IRtwqAsyncResult* This,REFIID riid,void **ppvObject) {
146    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
147}
148static inline ULONG IRtwqAsyncResult_AddRef(IRtwqAsyncResult* This) {
149    return This->lpVtbl->AddRef(This);
150}
151static inline ULONG IRtwqAsyncResult_Release(IRtwqAsyncResult* This) {
152    return This->lpVtbl->Release(This);
153}
154/*** IRtwqAsyncResult methods ***/
155static inline HRESULT IRtwqAsyncResult_GetState(IRtwqAsyncResult* This,IUnknown **state) {
156    return This->lpVtbl->GetState(This,state);
157}
158static inline HRESULT IRtwqAsyncResult_GetStatus(IRtwqAsyncResult* This) {
159    return This->lpVtbl->GetStatus(This);
160}
161static inline HRESULT IRtwqAsyncResult_SetStatus(IRtwqAsyncResult* This,HRESULT status) {
162    return This->lpVtbl->SetStatus(This,status);
163}
164static inline HRESULT IRtwqAsyncResult_GetObject(IRtwqAsyncResult* This,IUnknown **object) {
165    return This->lpVtbl->GetObject(This,object);
166}
167static inline 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
184DEFINE_GUID(IID_IRtwqAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e);
185#if defined(__cplusplus) && !defined(CINTERFACE)
186MIDL_INTERFACE("a27003cf-2354-4f2a-8d6a-ab7cff15437e")
187IRtwqAsyncCallback : 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
201typedef 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
229interface 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 ***/
244static inline HRESULT IRtwqAsyncCallback_QueryInterface(IRtwqAsyncCallback* This,REFIID riid,void **ppvObject) {
245    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
246}
247static inline ULONG IRtwqAsyncCallback_AddRef(IRtwqAsyncCallback* This) {
248    return This->lpVtbl->AddRef(This);
249}
250static inline ULONG IRtwqAsyncCallback_Release(IRtwqAsyncCallback* This) {
251    return This->lpVtbl->Release(This);
252}
253/*** IRtwqAsyncCallback methods ***/
254static inline HRESULT IRtwqAsyncCallback_GetParameters(IRtwqAsyncCallback* This,DWORD *flags,DWORD *queue) {
255    return This->lpVtbl->GetParameters(This,flags,queue);
256}
257static inline 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
274DEFINE_GUID(IID_IRtwqPlatformEvents, 0x63d9255a, 0x7ff1, 0x4b61, 0x8f,0xaf, 0xed,0x64,0x60,0xda,0xcf,0x2b);
275#if defined(__cplusplus) && !defined(CINTERFACE)
276MIDL_INTERFACE("63d9255a-7ff1-4b61-8faf-ed6460dacf2b")
277IRtwqPlatformEvents : 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
293typedef 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
321interface 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 ***/
337static inline HRESULT IRtwqPlatformEvents_QueryInterface(IRtwqPlatformEvents* This,REFIID riid,void **ppvObject) {
338    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
339}
340static inline ULONG IRtwqPlatformEvents_AddRef(IRtwqPlatformEvents* This) {
341    return This->lpVtbl->AddRef(This);
342}
343static inline ULONG IRtwqPlatformEvents_Release(IRtwqPlatformEvents* This) {
344    return This->lpVtbl->Release(This);
345}
346/*** IRtwqPlatformEvents methods ***/
347static inline HRESULT IRtwqPlatformEvents_InitializationComplete(IRtwqPlatformEvents* This) {
348    return This->lpVtbl->InitializationComplete(This);
349}
350static inline HRESULT IRtwqPlatformEvents_ShutdownStart(IRtwqPlatformEvents* This) {
351    return This->lpVtbl->ShutdownStart(This);
352}
353static inline 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__
373typedef struct tagRTWQASYNCRESULT
374{
375    IRtwqAsyncResult AsyncResult;
376#else
377typedef struct tagRTWQASYNCRESULT : public IRtwqAsyncResult {
378#endif
379    OVERLAPPED overlapped;
380    IRtwqAsyncCallback *pCallback;
381    HRESULT hrStatusResult;
382    DWORD dwBytesTransferred;
383    HANDLE hEvent;
384} RTWQASYNCRESULT;
385typedef void (WINAPI *RTWQPERIODICCALLBACK)(IUnknown *context);
386HRESULT WINAPI RtwqAddPeriodicCallback(RTWQPERIODICCALLBACK callback, IUnknown *context, DWORD *key);
387HRESULT WINAPI RtwqAllocateSerialWorkQueue(DWORD target_queue, DWORD *queue);
388HRESULT WINAPI RtwqAllocateWorkQueue(RTWQ_WORKQUEUE_TYPE queue_type, DWORD *queue);
389HRESULT WINAPI RtwqBeginRegisterWorkQueueWithMMCSS(DWORD queue, const WCHAR *mmcss_class, DWORD taskid, LONG priority, IRtwqAsyncCallback *callback, IUnknown *state);
390HRESULT WINAPI RtwqBeginUnregisterWorkQueueWithMMCSS(DWORD queue, IRtwqAsyncCallback *callback, IUnknown *state);
391HRESULT WINAPI RtwqCancelDeadline(HANDLE request);
392HRESULT WINAPI RtwqCancelWorkItem(RTWQWORKITEM_KEY key);
393HRESULT WINAPI RtwqCreateAsyncResult(IUnknown *object, IRtwqAsyncCallback *callback, IUnknown *state, IRtwqAsyncResult **result);
394HRESULT WINAPI RtwqEndRegisterWorkQueueWithMMCSS(IRtwqAsyncResult *result, DWORD *taskid);
395HRESULT WINAPI RtwqGetWorkQueueMMCSSClass(DWORD queue, WCHAR *mmcss_class, DWORD *length);
396HRESULT WINAPI RtwqGetWorkQueueMMCSSPriority(DWORD queue, LONG *priority);
397HRESULT WINAPI RtwqGetWorkQueueMMCSSTaskId(DWORD queue, DWORD *taskid);
398HRESULT WINAPI RtwqInvokeCallback(IRtwqAsyncResult *result);
399HRESULT WINAPI RtwqJoinWorkQueue(DWORD queue, HANDLE hFile, HANDLE *cookie);
400HRESULT WINAPI RtwqLockPlatform(void);
401HRESULT WINAPI RtwqLockSharedWorkQueue(const WCHAR *usageclass, LONG priority, DWORD *taskid, DWORD *queue);
402HRESULT WINAPI RtwqLockWorkQueue(DWORD queue);
403HRESULT WINAPI RtwqPutWaitingWorkItem(HANDLE event, LONG priority, IRtwqAsyncResult *result, RTWQWORKITEM_KEY *key);
404HRESULT WINAPI RtwqPutWorkItem(DWORD queue, LONG priority, IRtwqAsyncResult *result);
405HRESULT WINAPI RtwqRegisterPlatformEvents(IRtwqPlatformEvents *events);
406HRESULT WINAPI RtwqRegisterPlatformWithMMCSS(const WCHAR *mmcss_class, DWORD *taskid, LONG priority);
407HRESULT WINAPI RtwqRemovePeriodicCallback(DWORD key);
408HRESULT WINAPI RtwqScheduleWorkItem(IRtwqAsyncResult *result, INT64 timeout, RTWQWORKITEM_KEY *key);
409HRESULT WINAPI RtwqSetDeadline(DWORD queue_id, LONGLONG deadline, HANDLE *request);
410HRESULT WINAPI RtwqSetDeadline2(DWORD queue_id, LONGLONG deadline, LONGLONG predeadline, HANDLE *request);
411HRESULT WINAPI RtwqSetLongRunning(DWORD queue_id, WINBOOL enable);
412HRESULT WINAPI RtwqShutdown(void);
413HRESULT WINAPI RtwqStartup(void);
414HRESULT WINAPI RtwqUnjoinWorkQueue(DWORD queue, HANDLE cookie);
415HRESULT WINAPI RtwqUnlockPlatform(void);
416HRESULT WINAPI RtwqUnlockWorkQueue(DWORD queue);
417HRESULT WINAPI RtwqUnregisterPlatformEvents(IRtwqPlatformEvents *events);
418HRESULT 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__ */