29 Semaphore->Header.SignalState =
Count;
33 Semaphore->Limit =
Limit;
46 return Semaphore->Header.SignalState;
81 Semaphore->Header.SignalState =
State;
#define ASSERT_IRQL_LESS_OR_EQUAL(x)
#define STATUS_SEMAPHORE_LIMIT_EXCEEDED
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
VOID FASTCALL KiWaitTest(PVOID Object, KPRIORITY Increment)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
_In_ KPRIORITY _In_ LONG Adjustment
#define ASSERT_SEMAPHORE(Object)
VOID NTAPI KeInitializeSemaphore(IN PKSEMAPHORE Semaphore, IN LONG Count, IN LONG Limit)
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ EVENT_TYPE _In_ BOOLEAN InitialState
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
struct _KSEMAPHORE KSEMAPHORE
FORCEINLINE VOID KiReleaseDispatcherLock(IN KIRQL OldIrql)
FORCEINLINE KIRQL KiAcquireDispatcherLock(VOID)
LONG NTAPI KeReleaseSemaphore(IN PKSEMAPHORE Semaphore, IN KPRIORITY Increment, IN LONG Adjustment, IN BOOLEAN Wait)
#define InitializeListHead(ListHead)
LONG NTAPI KeReadStateSemaphore(IN PKSEMAPHORE Semaphore)
#define KeGetCurrentThread
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
_In_ LONG _In_ LONG Limit