33 Mutant->OwnerThread = CurrentThread;
40 &Mutant->MutantListEntry);
48 Mutant->OwnerThread =
NULL;
58 Mutant->Abandoned =
FALSE;
59 Mutant->ApcDisable = 0;
73 Mutex->Header.SignalState = 1;
79 Mutex->ApcDisable = 1;
90 return Mutant->Header.SignalState;
117 if (Abandon ==
FALSE)
120 if (Mutant->OwnerThread != CurrentThread)
131 Mutant->Header.SignalState++;
136 Mutant->Header.SignalState = 1;
137 Mutant->Abandoned =
TRUE;
141 if (Mutant->Header.SignalState == 1)
150 EnableApc = Mutant->ApcDisable;
154 Mutant->OwnerThread =
NULL;
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define InitializeListHead(ListHead)
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
#define KeGetCurrentThread
FORCEINLINE VOID KiReleaseDispatcherLock(IN KIRQL OldIrql)
#define KeLeaveCriticalRegion()
FORCEINLINE KIRQL KiAcquireDispatcherLock(VOID)
VOID FASTCALL KiWaitTest(PVOID Object, KPRIORITY Increment)
LONG NTAPI KeReleaseMutant(IN PKMUTANT Mutant, IN KPRIORITY Increment, IN BOOLEAN Abandon, IN BOOLEAN Wait)
VOID NTAPI KeInitializeMutant(IN PKMUTANT Mutant, IN BOOLEAN InitialOwner)
LONG NTAPI KeReadStateMutant(IN PKMUTANT Mutant)
VOID NTAPI KeInitializeMutex(IN PKMUTEX Mutex, IN ULONG Level)
LONG NTAPI KeReleaseMutex(IN PKMUTEX Mutex, IN BOOLEAN Wait)
#define STATUS_MUTANT_NOT_OWNED
#define ASSERT_IRQL_LESS_OR_EQUAL(x)
LIST_ENTRY MutantListHead
_In_ WDF_POWER_DEVICE_STATE PreviousState
_In_ WDFDPC _In_ BOOLEAN Wait
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_In_ BOOLEAN InitialOwner
#define ASSERT_MUTANT(Object)