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;
struct _LIST_ENTRY * Blink
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
IN PVOID IN PVOID IN USHORT IN USHORT Size
VOID NTAPI CsrDereferenceThread(IN PCSR_THREAD CsrThread)
#define InsertTailList(ListHead, Entry)
#define CsrReleaseWaitLock()
#define CsrReleaseProcessLock()
NTSTATUS NTAPI NtReplyPort(IN HANDLE PortHandle, IN PPORT_MESSAGE ReplyMessage)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID NTAPI CsrReleaseCapturedArguments(IN PCSR_API_MESSAGE ApiMessage)
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)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
struct _LIST_ENTRY * Flink
VOID NTAPI CsrDereferenceWait(IN PLIST_ENTRY WaitList)
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)
#define CsrAcquireProcessLock()
struct _CSR_WAIT_BLOCK CSR_WAIT_BLOCK
RTL_CRITICAL_SECTION CsrWaitListsLock
BOOLEAN NTAPI CsrNotifyWait(IN PLIST_ENTRY WaitList, IN BOOLEAN NotifyAll, IN PVOID WaitArgument1, IN PVOID WaitArgument2)
CSR_WAIT_FUNCTION WaitFunction
#define CsrAcquireWaitLock()
CSR_API_MESSAGE WaitApiMessage
VOID NTAPI CsrMoveSatisfiedWait(IN PLIST_ENTRY DestinationList, IN PLIST_ENTRY WaitList)
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)
#define RtlCopyMemory(Destination, Source, Length)
BOOLEAN NTAPI CsrNotifyWaitBlock(IN PCSR_WAIT_BLOCK WaitBlock, IN PLIST_ENTRY WaitList, IN PVOID WaitArgument1, IN PVOID WaitArgument2, IN ULONG WaitFlags, IN BOOLEAN DereferenceThread)