rtworkq.h 15 KB

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