Reactos
at master 295 lines 4.9 kB view raw
1 2#pragma once 3 4#ifndef _THREADPOOLAPISET_H_ 5#define _THREADPOOLAPISET_H_ 6 7#include <minwindef.h> 8#include <minwinbase.h> 9 10#ifdef __cplusplus 11extern "C" { 12#endif 13 14WINBASEAPI 15_Must_inspect_result_ 16PTP_POOL 17WINAPI 18CreateThreadpool( 19 _Reserved_ PVOID reserved); 20 21WINBASEAPI 22VOID 23WINAPI 24CloseThreadpool( 25 _Inout_ PTP_POOL ptpp); 26 27WINBASEAPI 28BOOL 29WINAPI 30SetThreadpoolThreadMinimum( 31 _Inout_ PTP_POOL ptpp, 32 _In_ DWORD cthrdMic); 33 34WINBASEAPI 35VOID 36WINAPI 37SetThreadpoolThreadMaximum( 38 _Inout_ PTP_POOL ptpp, 39 _In_ DWORD cthrdMost); 40 41WINBASEAPI 42BOOL 43WINAPI 44QueryThreadpoolStackInformation( 45 _In_ PTP_POOL ptpp, 46 _Out_ PTP_POOL_STACK_INFORMATION ptpsi); 47 48WINBASEAPI 49BOOL 50WINAPI 51SetThreadpoolStackInformation( 52 _Inout_ PTP_POOL ptpp, 53 _In_ PTP_POOL_STACK_INFORMATION ptpsi); 54 55WINBASEAPI 56_Must_inspect_result_ 57BOOL 58WINAPI 59TrySubmitThreadpoolCallback( 60 _In_ PTP_SIMPLE_CALLBACK pfns, 61 _Inout_opt_ PVOID pv, 62 _In_opt_ PTP_CALLBACK_ENVIRON pcbe); 63 64WINBASEAPI 65BOOL 66WINAPI 67CallbackMayRunLong( 68 _Inout_ PTP_CALLBACK_INSTANCE pci); 69 70WINBASEAPI 71VOID 72WINAPI 73DisassociateCurrentThreadFromCallback( 74 _Inout_ PTP_CALLBACK_INSTANCE pci); 75 76WINBASEAPI 77VOID 78WINAPI 79FreeLibraryWhenCallbackReturns( 80 _Inout_ PTP_CALLBACK_INSTANCE pci, 81 _In_ HMODULE mod); 82 83WINBASEAPI 84VOID 85WINAPI 86LeaveCriticalSectionWhenCallbackReturns( 87 _Inout_ PTP_CALLBACK_INSTANCE pci, 88 _Inout_ PCRITICAL_SECTION pcs); 89 90WINBASEAPI 91VOID 92WINAPI 93ReleaseMutexWhenCallbackReturns( 94 _Inout_ PTP_CALLBACK_INSTANCE pci, 95 _In_ HANDLE mut); 96 97WINBASEAPI 98VOID 99WINAPI 100ReleaseSemaphoreWhenCallbackReturns( 101 _Inout_ PTP_CALLBACK_INSTANCE pci, 102 _In_ HANDLE sem, 103 _In_ DWORD crel); 104 105WINBASEAPI 106VOID 107WINAPI 108SetEventWhenCallbackReturns( 109 _Inout_ PTP_CALLBACK_INSTANCE pci, 110 _In_ HANDLE evt); 111 112WINBASEAPI 113_Must_inspect_result_ 114PTP_CLEANUP_GROUP 115WINAPI 116CreateThreadpoolCleanupGroup( 117 VOID); 118 119WINBASEAPI 120VOID 121WINAPI 122CloseThreadpoolCleanupGroup( 123 _Inout_ PTP_CLEANUP_GROUP ptpcg); 124 125WINBASEAPI 126VOID 127WINAPI 128CloseThreadpoolCleanupGroupMembers( 129 _Inout_ PTP_CLEANUP_GROUP ptpcg, 130 _In_ BOOL fCancelPendingCallbacks, 131 _Inout_opt_ PVOID pvCleanupContext); 132 133typedef 134VOID 135(WINAPI *PTP_WIN32_IO_CALLBACK)( 136 _Inout_ PTP_CALLBACK_INSTANCE Instance, 137 _Inout_opt_ PVOID Context, 138 _Inout_opt_ PVOID Overlapped, 139 _In_ ULONG IoResult, 140 _In_ ULONG_PTR NumberOfBytesTransferred, 141 _Inout_ PTP_IO Io); 142 143WINBASEAPI 144_Must_inspect_result_ 145PTP_IO 146WINAPI 147CreateThreadpoolIo( 148 _In_ HANDLE fl, 149 _In_ PTP_WIN32_IO_CALLBACK pfnio, 150 _Inout_opt_ PVOID pv, 151 _In_opt_ PTP_CALLBACK_ENVIRON pcbe); 152 153WINBASEAPI 154VOID 155WINAPI 156CloseThreadpoolIo( 157 _Inout_ PTP_IO pio); 158 159WINBASEAPI 160VOID 161WINAPI 162StartThreadpoolIo( 163 _Inout_ PTP_IO pio); 164 165WINBASEAPI 166VOID 167WINAPI 168CancelThreadpoolIo( 169 _Inout_ PTP_IO pio); 170 171WINBASEAPI 172VOID 173WINAPI 174WaitForThreadpoolIoCallbacks( 175 _Inout_ PTP_IO pio, 176 _In_ BOOL fCancelPendingCallbacks); 177 178WINBASEAPI 179_Must_inspect_result_ 180PTP_TIMER 181WINAPI 182CreateThreadpoolTimer( 183 _In_ PTP_TIMER_CALLBACK pfnti, 184 _Inout_opt_ PVOID pv, 185 _In_opt_ PTP_CALLBACK_ENVIRON pcbe); 186 187WINBASEAPI 188VOID 189WINAPI 190CloseThreadpoolTimer( 191 _Inout_ PTP_TIMER pti); 192 193WINBASEAPI 194VOID 195WINAPI 196SetThreadpoolTimer( 197 _Inout_ PTP_TIMER pti, 198 _In_opt_ PFILETIME pftDueTime, 199 _In_ DWORD msPeriod, 200 _In_opt_ DWORD msWindowLength); 201 202WINBASEAPI 203BOOL 204WINAPI 205SetThreadpoolTimerEx( 206 _Inout_ PTP_TIMER pti, 207 _In_opt_ PFILETIME pftDueTime, 208 _In_ DWORD msPeriod, 209 _In_opt_ DWORD msWindowLength); 210 211WINBASEAPI 212BOOL 213WINAPI 214IsThreadpoolTimerSet( 215 _Inout_ PTP_TIMER pti); 216 217WINBASEAPI 218VOID 219WINAPI 220WaitForThreadpoolTimerCallbacks( 221 _Inout_ PTP_TIMER pti, 222 _In_ BOOL fCancelPendingCallbacks); 223 224WINBASEAPI 225_Must_inspect_result_ 226PTP_WAIT 227WINAPI 228CreateThreadpoolWait( 229 _In_ PTP_WAIT_CALLBACK pfnwa, 230 _Inout_opt_ PVOID pv, 231 _In_opt_ PTP_CALLBACK_ENVIRON pcbe); 232 233WINBASEAPI 234VOID 235WINAPI 236CloseThreadpoolWait( 237 _Inout_ PTP_WAIT pwa); 238 239WINBASEAPI 240VOID 241WINAPI 242SetThreadpoolWait( 243 _Inout_ PTP_WAIT pwa, 244 _In_opt_ HANDLE h, 245 _In_opt_ PFILETIME pftTimeout); 246 247WINBASEAPI 248BOOL 249WINAPI 250SetThreadpoolWaitEx( 251 _Inout_ PTP_WAIT pwa, 252 _In_opt_ HANDLE h, 253 _In_opt_ PFILETIME pftTimeout, 254 _Reserved_ PVOID Reserved); 255 256WINBASEAPI 257VOID 258WINAPI 259WaitForThreadpoolWaitCallbacks( 260 _Inout_ PTP_WAIT pwa, 261 _In_ BOOL fCancelPendingCallbacks); 262 263WINBASEAPI 264_Must_inspect_result_ 265PTP_WORK 266WINAPI 267CreateThreadpoolWork( 268 _In_ PTP_WORK_CALLBACK pfnwk, 269 _Inout_opt_ PVOID pv, 270 _In_opt_ PTP_CALLBACK_ENVIRON pcbe); 271 272WINBASEAPI 273VOID 274WINAPI 275CloseThreadpoolWork( 276 _Inout_ PTP_WORK pwk); 277 278WINBASEAPI 279VOID 280WINAPI 281SubmitThreadpoolWork( 282 _Inout_ PTP_WORK pwk); 283 284WINBASEAPI 285VOID 286WINAPI 287WaitForThreadpoolWorkCallbacks( 288 _Inout_ PTP_WORK pwk, 289 _In_ BOOL fCancelPendingCallbacks); 290 291#ifdef __cplusplus 292} // extern "C" 293#endif 294 295#endif // _THREADPOOLAPISET_H_