62 WaitApiMessage->Header.u1.s1.TotalLength;
84 WaitApiMessage->
Header.u1.s1.TotalLength);
87 *NewWaitBlock = WaitBlock;
128 if (WaitBlock->WaitFunction(WaitList,
129 WaitBlock->WaitThread,
130 &WaitBlock->WaitApiMessage,
131 WaitBlock->WaitContext,
137 WaitBlock->WaitThread->WaitBlock =
NULL;
140 if (WaitBlock->WaitApiMessage.CsrCaptureData)
147 NtReplyPort(WaitBlock->WaitThread->Process->ClientPort,
148 &WaitBlock->WaitApiMessage.Header);
151 if (DereferenceThread)
154 if (WaitBlock->WaitList.Flink)
168 WaitBlock->WaitFunction =
NULL;
240 CsrWaitThread->WaitBlock = WaitBlock;
276 NextEntry = WaitList->
Flink;
279 while (NextEntry != WaitList)
285 NextEntry = NextEntry->
Flink;
340 NextEntry = WaitList->
Flink;
343 while (NextEntry != WaitList)
349 NextEntry = NextEntry->
Flink;
401 NextEntry = WaitList->
Flink;
404 while (NextEntry != WaitList)
410 NextEntry = NextEntry->
Flink;
427 if (!NotifyAll)
break;
433 return NotifySuccess;
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
BOOLEAN(NTAPI * CSR_WAIT_FUNCTION)(IN PLIST_ENTRY WaitList, IN PCSR_THREAD WaitThread, IN PCSR_API_MESSAGE WaitApiMessage, IN PVOID WaitContext, IN PVOID WaitArgument1, IN PVOID WaitArgument2, IN ULONG WaitFlags)
VOID NTAPI CsrDereferenceThread(IN PCSR_THREAD CsrThread)
struct _CSR_WAIT_BLOCK CSR_WAIT_BLOCK
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
NTSTATUS NTAPI NtReplyPort(IN HANDLE PortHandle, IN PPORT_MESSAGE ReplyMessage)
CSR_WAIT_FUNCTION WaitFunction
CSR_API_MESSAGE WaitApiMessage
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
VOID NTAPI CsrReleaseCapturedArguments(IN PCSR_API_MESSAGE ApiMessage)
#define CsrAcquireWaitLock()
#define CsrAcquireProcessLock()
#define CsrReleaseProcessLock()
#define CsrReleaseWaitLock()
VOID NTAPI CsrDereferenceWait(IN PLIST_ENTRY WaitList)
RTL_CRITICAL_SECTION CsrWaitListsLock
BOOLEAN NTAPI CsrInitializeWait(IN CSR_WAIT_FUNCTION WaitFunction, IN PCSR_THREAD CsrWaitThread, IN OUT PCSR_API_MESSAGE WaitApiMessage, IN PVOID WaitContext, OUT PCSR_WAIT_BLOCK *NewWaitBlock)
VOID NTAPI CsrMoveSatisfiedWait(IN PLIST_ENTRY DestinationList, IN PLIST_ENTRY WaitList)
BOOLEAN NTAPI CsrNotifyWaitBlock(IN PCSR_WAIT_BLOCK WaitBlock, IN PLIST_ENTRY WaitList, IN PVOID WaitArgument1, IN PVOID WaitArgument2, IN ULONG WaitFlags, IN BOOLEAN DereferenceThread)
BOOLEAN NTAPI CsrCreateWait(IN PLIST_ENTRY WaitList, IN CSR_WAIT_FUNCTION WaitFunction, IN PCSR_THREAD CsrWaitThread, IN OUT PCSR_API_MESSAGE WaitApiMessage, IN PVOID WaitContext)
BOOLEAN NTAPI CsrNotifyWait(IN PLIST_ENTRY WaitList, IN BOOLEAN NotifyAll, IN PVOID WaitArgument1, IN PVOID WaitArgument2)
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size