Reactos
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_