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