#include <rtl.h>
#include <debug.h>
Go to the source code of this file.
◆ NDEBUG
◆ PRTLP_WAIT
◆ RTLP_WAIT
◆ get_nt_timeout()
◆ RtlDeregisterWait()
Definition at line 270 of file wait.c.
271{
273}
NTSTATUS NTAPI RtlDeregisterWaitEx(HANDLE WaitHandle, HANDLE CompletionEvent)
◆ RtlDeregisterWaitEx()
Definition at line 202 of file wait.c.
204{
207
208
209
211 if (
Wait->CallbackInProgress)
212 {
213 if (CompletionEvent !=
NULL)
214 {
216 {
222
225
227
228 if (
Wait->CallbackInProgress)
230
232 }
233 else
234 {
236
237 if (
Wait->CallbackInProgress)
239 }
240 }
241 else
243 }
244
246 {
250 }
251
253}
#define InterlockedIncrement
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define INVALID_HANDLE_VALUE
#define InterlockedExchangePointer(Target, Value)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
NTSYSAPI NTSTATUS NTAPI NtWaitForSingleObject(IN HANDLE hObject, IN BOOLEAN bAlertable, IN PLARGE_INTEGER Timeout)
NTSTATUS NTAPI NtSetEvent(IN HANDLE EventHandle, OUT PLONG PreviousState OPTIONAL)
NTSTATUS NTAPI NtCreateEvent(OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState)
struct _RTLP_WAIT * PRTLP_WAIT
_In_ WDFDPC _In_ BOOLEAN Wait
Referenced by RtlDeregisterWait().
◆ RtlRegisterWait()
Definition at line 132 of file wait.c.
138{
141
142
143
147
151 Wait->Milliseconds = Milliseconds;
154 Wait->DeleteCount = 0;
156
162
164 {
167 }
168
171
175
177 {
181 }
182
183 *NewWaitObject =
Wait;
185}
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
NTSYSAPI NTSTATUS NTAPI RtlQueueWorkItem(_In_ WORKERCALLBACKFUNC Function, _In_opt_ PVOID Context, _In_ ULONG Flags)
static VOID NTAPI Wait_thread_proc(LPVOID Arg)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
#define WT_TRANSFER_IMPERSONATION
#define WT_EXECUTEINPERSISTENTTHREAD
#define WT_EXECUTEINIOTHREAD
#define WT_EXECUTELONGFUNCTION
_Must_inspect_result_ _In_ ULONG Flags
◆ Wait_thread_proc()
Definition at line 43 of file wait.c.
44{
51
52
53
55 {
59 alertable,
61
63 {
65
67 {
68
69
70
71 TimerOrWaitFired =
FALSE;
72 }
73 else
74 {
75
76
77
78 TimerOrWaitFired =
TRUE;
79 }
81 Wait->Callback(
Wait->Context, TimerOrWaitFired );
83
85 break;
86 }
88 break;
89 }
90
91 completion_event =
Wait->CompletionEvent;
93
95 {
98 }
99}
static struct object_header ** handles
NTSTATUS NTAPI NtWaitForMultipleObjects(IN ULONG ObjectCount, IN PHANDLE HandleArray, IN WAIT_TYPE WaitType, IN BOOLEAN Alertable, IN PLARGE_INTEGER TimeOut OPTIONAL)
static PLARGE_INTEGER get_nt_timeout(PLARGE_INTEGER pTime, ULONG timeout)
#define WT_EXECUTEONLYONCE
Referenced by RtlRegisterWait().