-
-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathHeader.h
More file actions
113 lines (85 loc) · 2.49 KB
/
Header.h
File metadata and controls
113 lines (85 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#pragma once
#include <Windows.h>
#include <stdio.h>
#include <stdint.h>
#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
typedef ULONG LOGICAL;
typedef ULONG* PLOGICAL;
typedef NTSTATUS(NTAPI* pTpAllocPool)(
_Out_ PTP_POOL* PoolReturn,
_Reserved_ PVOID Reserved);
typedef NTSTATUS(NTAPI* pTpSetPoolMaxThreads)(
_Inout_ PTP_POOL Pool,
_In_ LONG MaxThreads);
typedef NTSTATUS(NTAPI* pTpSetPoolMinThreads)(
_Inout_ PTP_POOL Pool,
_In_ LONG MinThreads);
typedef NTSTATUS(NTAPI* pTpReleasePool)(
_Inout_ PTP_POOL Pool);
typedef NTSTATUS(NTAPI* pTpWaitForWork)(
_Inout_ PTP_WORK Work,
_In_ LOGICAL CancelPendingCallbacks);
typedef NTSTATUS(NTAPI* pTpPostWork)(
_Inout_ PTP_WORK Work);
typedef NTSTATUS(NTAPI* pTpReleaseWork)(
_Inout_ PTP_WORK Work);
typedef NTSTATUS(NTAPI* pTpAllocWork)(
_Out_ PTP_WORK* WorkReturn,
_In_ PTP_WORK_CALLBACK WorkCallback,
_Inout_opt_ PVOID WorkContext,
_In_opt_ PTP_CALLBACK_ENVIRON CallbackEnviron);
typedef NTSTATUS(NTAPI* pTpAllocTimer)(
_Out_ PTP_TIMER* Timer,
_In_ PTP_TIMER_CALLBACK Callback,
_Inout_opt_ PVOID Context,
_In_opt_ PTP_CALLBACK_ENVIRON CallbackEnviron);
typedef NTSTATUS(NTAPI* pTpSetTimer)(
_Inout_ PTP_TIMER Timer,
_In_opt_ PLARGE_INTEGER DueTime,
_In_ LONG Period,
_In_opt_ LONG WindowLength);
typedef NTSTATUS(NTAPI* pTpReleaseTimer)(
_Inout_ PTP_TIMER Timer);
typedef NTSTATUS(NTAPI* pTpAllocWait)(
_Out_ PTP_WAIT* Wait,
_In_ PTP_WAIT_CALLBACK Callback,
_Inout_opt_ PVOID Context,
_In_opt_ PTP_CALLBACK_ENVIRON CallbackEnviron);
typedef NTSTATUS(NTAPI* pTpSetWait)(
_Inout_ PTP_WAIT Wait,
_In_opt_ HANDLE Handle,
_In_opt_ PLARGE_INTEGER Timeout);
typedef NTSTATUS(NTAPI* pTpReleaseWait)(
_Inout_ PTP_WAIT Wait);
FORCEINLINE
VOID
MyTpInitializeCallbackEnviron(
_Out_ PTP_CALLBACK_ENVIRON CallbackEnviron
)
{
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN7)
CallbackEnviron->Version = 3;
#else
CallbackEnviron->Version = 1;
#endif
CallbackEnviron->Pool = NULL;
CallbackEnviron->CleanupGroup = NULL;
CallbackEnviron->CleanupGroupCancelCallback = NULL;
CallbackEnviron->RaceDll = NULL;
CallbackEnviron->ActivationContext = NULL;
CallbackEnviron->FinalizationCallback = NULL;
CallbackEnviron->u.Flags = 0;
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN7)
CallbackEnviron->CallbackPriority = TP_CALLBACK_PRIORITY_NORMAL;
CallbackEnviron->Size = sizeof(TP_CALLBACK_ENVIRON);
#endif
}
FORCEINLINE
VOID
MyTpSetCallbackThreadpool(
_Inout_ PTP_CALLBACK_ENVIRON CallbackEnviron,
_In_ PTP_POOL Pool
)
{
CallbackEnviron->Pool = Pool;
}