Process Hacker
|
Go to the source code of this file.
Data Structures | |
struct | _PH_QUEUED_LOCK |
Typedefs | |
typedef struct _PH_QUEUED_LOCK | PH_QUEUED_LOCK |
typedef struct _PH_QUEUED_LOCK * | PPH_QUEUED_LOCK |
Functions | |
struct | DECLSPEC_ALIGN (16) _PH_QUEUED_WAIT_BLOCK |
BOOLEAN | PhQueuedLockInitialization (VOID) |
FORCEINLINE VOID | PhInitializeQueuedLock (_Out_ PPH_QUEUED_LOCK QueuedLock) |
PHLIBAPI VOID FASTCALL | PhfAcquireQueuedLockExclusive (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
Acquires a queued lock in exclusive mode. | |
PHLIBAPI VOID FASTCALL | PhfAcquireQueuedLockShared (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
Acquires a queued lock in shared mode. | |
PHLIBAPI VOID FASTCALL | PhfReleaseQueuedLockExclusive (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
Releases a queued lock in exclusive mode. | |
PHLIBAPI VOID FASTCALL | PhfReleaseQueuedLockShared (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
Releases a queued lock in shared mode. | |
PHLIBAPI VOID FASTCALL | PhfTryWakeQueuedLock (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
Wakes waiters in a queued lock, making no assumptions about the state of the lock. | |
PHLIBAPI VOID FASTCALL | PhfWakeForReleaseQueuedLock (_Inout_ PPH_QUEUED_LOCK QueuedLock, _In_ ULONG_PTR Value) |
Wakes waiters in a queued lock for releasing it in exclusive mode. | |
PHLIBAPI VOID FASTCALL | PhfPulseCondition (_Inout_ PPH_QUEUED_LOCK Condition) |
Wakes one thread sleeping on a condition variable. | |
PHLIBAPI VOID FASTCALL | PhfPulseAllCondition (_Inout_ PPH_QUEUED_LOCK Condition) |
Wakes all threads sleeping on a condition variable. | |
PHLIBAPI VOID FASTCALL | PhfWaitForCondition (_Inout_ PPH_QUEUED_LOCK Condition, _Inout_ PPH_QUEUED_LOCK Lock, _In_opt_ PLARGE_INTEGER Timeout) |
Sleeps on a condition variable. | |
PHLIBAPI VOID FASTCALL | PhfWaitForConditionEx (_Inout_ PPH_QUEUED_LOCK Condition, _Inout_ PVOID Lock, _In_ ULONG Flags, _In_opt_ PLARGE_INTEGER Timeout) |
Sleeps on a condition variable. | |
PHLIBAPI VOID FASTCALL | PhfQueueWakeEvent (_Inout_ PPH_QUEUED_LOCK WakeEvent, _Out_ PPH_QUEUED_WAIT_BLOCK WaitBlock) |
Queues a wait block to a wake event. | |
PHLIBAPI VOID FASTCALL | PhfSetWakeEvent (_Inout_ PPH_QUEUED_LOCK WakeEvent, _Inout_opt_ PPH_QUEUED_WAIT_BLOCK WaitBlock) |
Sets a wake event, unblocking all queued wait blocks. | |
PHLIBAPI NTSTATUS FASTCALL | PhfWaitForWakeEvent (_Inout_ PPH_QUEUED_LOCK WakeEvent, _Inout_ PPH_QUEUED_WAIT_BLOCK WaitBlock, _In_ BOOLEAN Spin, _In_opt_ PLARGE_INTEGER Timeout) |
Waits for a wake event to be set. | |
_Acquires_exclusive_lock_ QueuedLock FORCEINLINE VOID | PhAcquireQueuedLockExclusive (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
_Acquires_shared_lock_ QueuedLock FORCEINLINE VOID | PhAcquireQueuedLockShared (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
_When_ (return!=0, _Acquires_exclusive_lock_(*QueuedLock)) FORCEINLINE BOOLEAN PhTryAcquireQueuedLockExclusive(_Inout_ PPH_QUEUED_LOCK QueuedLock) | |
_Releases_exclusive_lock_ QueuedLock FORCEINLINE VOID | PhReleaseQueuedLockExclusive (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
_Releases_shared_lock_ QueuedLock FORCEINLINE VOID | PhReleaseQueuedLockShared (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
FORCEINLINE VOID | PhAcquireReleaseQueuedLockExclusive (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
FORCEINLINE BOOLEAN | PhTryAcquireReleaseQueuedLockExclusive (_Inout_ PPH_QUEUED_LOCK QueuedLock) |
FORCEINLINE VOID | PhSetWakeEvent (_Inout_ PPH_QUEUED_LOCK WakeEvent, _Inout_opt_ PPH_QUEUED_WAIT_BLOCK WaitBlock) |
Variables | |
PH_QUEUED_WAIT_BLOCK | |
* | PPH_QUEUED_WAIT_BLOCK |
#define PH_CONDITION_WAIT_CRITICAL_SECTION 0x2 |
Definition at line 135 of file queuedlock.h.
#define PH_CONDITION_WAIT_FAST_LOCK 0x4 |
Definition at line 136 of file queuedlock.h.
#define PH_CONDITION_WAIT_LOCK_TYPE_MASK 0xfff |
Definition at line 137 of file queuedlock.h.
#define PH_CONDITION_WAIT_QUEUED_LOCK 0x1 |
Definition at line 134 of file queuedlock.h.
#define PH_CONDITION_WAIT_SHARED 0x1000 |
Definition at line 139 of file queuedlock.h.
#define PH_CONDITION_WAIT_SPIN 0x2000 |
Definition at line 140 of file queuedlock.h.
#define PH_QUEUED_LOCK_FLAGS ((ULONG_PTR)0xf) |
Definition at line 20 of file queuedlock.h.
#define PH_QUEUED_LOCK_INIT { 0 } |
Definition at line 32 of file queuedlock.h.
#define PH_QUEUED_LOCK_MULTIPLE_SHARED ((ULONG_PTR)0x8) |
Definition at line 18 of file queuedlock.h.
#define PH_QUEUED_LOCK_OWNED ((ULONG_PTR)0x1) |
Definition at line 8 of file queuedlock.h.
#define PH_QUEUED_LOCK_OWNED_SHIFT 0 |
Definition at line 9 of file queuedlock.h.
#define PH_QUEUED_LOCK_SHARED_INC ((ULONG_PTR)0x4) |
Definition at line 13 of file queuedlock.h.
#define PH_QUEUED_LOCK_SHARED_SHIFT 2 |
Definition at line 14 of file queuedlock.h.
#define PH_QUEUED_LOCK_TRAVERSING ((ULONG_PTR)0x4) |
Definition at line 17 of file queuedlock.h.
#define PH_QUEUED_LOCK_WAITERS ((ULONG_PTR)0x2) |
Definition at line 10 of file queuedlock.h.
#define PH_QUEUED_WAITER_EXCLUSIVE 0x1 |
Definition at line 34 of file queuedlock.h.
#define PH_QUEUED_WAITER_SPINNING 0x2 |
Definition at line 35 of file queuedlock.h.
#define PH_QUEUED_WAITER_SPINNING_SHIFT 1 |
Definition at line 36 of file queuedlock.h.
#define PhGetQueuedLockSharedOwners | ( | Value | ) | ((ULONG_PTR)(Value) >> PH_QUEUED_LOCK_SHARED_SHIFT) |
Definition at line 22 of file queuedlock.h.
#define PhGetQueuedLockWaitBlock | ( | Value | ) | ((PPH_QUEUED_WAIT_BLOCK)((ULONG_PTR)(Value) & ~PH_QUEUED_LOCK_FLAGS)) |
Definition at line 24 of file queuedlock.h.
#define PhPulseAllCondition PhfPulseAllCondition |
Definition at line 116 of file queuedlock.h.
#define PhPulseCondition PhfPulseCondition |
Definition at line 108 of file queuedlock.h.
#define PhQueueWakeEvent PhfQueueWakeEvent |
Definition at line 153 of file queuedlock.h.
#define PhWaitForCondition PhfWaitForCondition |
Definition at line 124 of file queuedlock.h.
#define PhWaitForConditionEx PhfWaitForConditionEx |
Definition at line 142 of file queuedlock.h.
#define PhWaitForWakeEvent PhfWaitForWakeEvent |
Definition at line 170 of file queuedlock.h.
typedef struct _PH_QUEUED_LOCK PH_QUEUED_LOCK |
typedef struct _PH_QUEUED_LOCK * PPH_QUEUED_LOCK |
_When_ | ( | return! | = 0 , |
_Acquires_exclusive_lock_ * | QueuedLock | ||
) |
Definition at line 210 of file queuedlock.h.
|
read |
A pointer to the next wait block, i.e. the wait block pushed onto the list before this one.
A pointer to the previous wait block, i.e. the wait block pushed onto the list after this one.
A pointer to the last wait block, i.e. the first waiter pushed onto the list.
Definition at line 38 of file queuedlock.h.
_Acquires_exclusive_lock_ QueuedLock FORCEINLINE VOID PhAcquireQueuedLockExclusive | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Definition at line 184 of file queuedlock.h.
_Acquires_shared_lock_ QueuedLock FORCEINLINE VOID PhAcquireQueuedLockShared | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Definition at line 196 of file queuedlock.h.
FORCEINLINE VOID PhAcquireReleaseQueuedLockExclusive | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Definition at line 259 of file queuedlock.h.
PHLIBAPI VOID FASTCALL PhfAcquireQueuedLockExclusive | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Acquires a queued lock in exclusive mode.
QueuedLock | A queued lock. |
Definition at line 678 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfAcquireQueuedLockShared | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Acquires a queued lock in shared mode.
QueuedLock | A queued lock. |
Definition at line 730 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfPulseAllCondition | ( | _Inout_ PPH_QUEUED_LOCK | Condition | ) |
Wakes all threads sleeping on a condition variable.
Condition | A condition variable. |
Definition at line 1017 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfPulseCondition | ( | _Inout_ PPH_QUEUED_LOCK | Condition | ) |
Wakes one thread sleeping on a condition variable.
Condition | A condition variable. |
Definition at line 1001 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfQueueWakeEvent | ( | _Inout_ PPH_QUEUED_LOCK | WakeEvent, |
_Out_ PPH_QUEUED_WAIT_BLOCK | WaitBlock | ||
) |
Queues a wait block to a wake event.
WakeEvent | A wake event. |
WaitBlock | A wait block. |
Definition at line 1179 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfReleaseQueuedLockExclusive | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Releases a queued lock in exclusive mode.
QueuedLock | A queued lock. |
Definition at line 792 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfReleaseQueuedLockShared | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Releases a queued lock in shared mode.
QueuedLock | A queued lock. |
Definition at line 852 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfSetWakeEvent | ( | _Inout_ PPH_QUEUED_LOCK | WakeEvent, |
_Inout_opt_ PPH_QUEUED_WAIT_BLOCK | WaitBlock | ||
) |
Sets a wake event, unblocking all queued wait blocks.
WakeEvent | A wake event. |
WaitBlock | A wait block for a cancelled wait, otherwise NULL. |
Definition at line 1213 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfTryWakeQueuedLock | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Wakes waiters in a queued lock, making no assumptions about the state of the lock.
QueuedLock | A queued lock. |
Definition at line 935 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfWaitForCondition | ( | _Inout_ PPH_QUEUED_LOCK | Condition, |
_Inout_ PPH_QUEUED_LOCK | Lock, | ||
_In_opt_ PLARGE_INTEGER | Timeout | ||
) |
Sleeps on a condition variable.
Condition | A condition variable. |
Lock | A queued lock to release/acquire in exclusive mode. |
Timeout | Not implemented. |
Definition at line 1035 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfWaitForConditionEx | ( | _Inout_ PPH_QUEUED_LOCK | Condition, |
_Inout_ PVOID | Lock, | ||
_In_ ULONG | Flags, | ||
_In_opt_ PLARGE_INTEGER | Timeout | ||
) |
Sleeps on a condition variable.
Condition | A condition variable. |
Lock | A pointer to a lock. |
Flags | A combination of flags controlling the operation. |
Timeout | Not implemented. |
Definition at line 1086 of file queuedlock.c.
PHLIBAPI NTSTATUS FASTCALL PhfWaitForWakeEvent | ( | _Inout_ PPH_QUEUED_LOCK | WakeEvent, |
_Inout_ PPH_QUEUED_WAIT_BLOCK | WaitBlock, | ||
_In_ BOOLEAN | Spin, | ||
_In_opt_ PLARGE_INTEGER | Timeout | ||
) |
Waits for a wake event to be set.
WakeEvent | A wake event. |
WaitBlock | A wait block previously queued to the wake event using PhfQueueWakeEvent(). |
Spin | TRUE to spin on the wake event before blocking, FALSE to block immediately. |
Timeout | A timeout value. |
Definition at line 1274 of file queuedlock.c.
PHLIBAPI VOID FASTCALL PhfWakeForReleaseQueuedLock | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock, |
_In_ ULONG_PTR | Value | ||
) |
Wakes waiters in a queued lock for releasing it in exclusive mode.
QueuedLock | A queued lock. |
Value | The current value of the queued lock. |
Definition at line 974 of file queuedlock.c.
FORCEINLINE VOID PhInitializeQueuedLock | ( | _Out_ PPH_QUEUED_LOCK | QueuedLock | ) |
Definition at line 58 of file queuedlock.h.
BOOLEAN PhQueuedLockInitialization | ( | VOID | ) |
Definition at line 110 of file queuedlock.c.
_Releases_exclusive_lock_ QueuedLock FORCEINLINE VOID PhReleaseQueuedLockExclusive | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Definition at line 226 of file queuedlock.h.
_Releases_shared_lock_ QueuedLock FORCEINLINE VOID PhReleaseQueuedLockShared | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Definition at line 241 of file queuedlock.h.
FORCEINLINE VOID PhSetWakeEvent | ( | _Inout_ PPH_QUEUED_LOCK | WakeEvent, |
_Inout_opt_ PPH_QUEUED_WAIT_BLOCK | WaitBlock | ||
) |
Definition at line 292 of file queuedlock.h.
FORCEINLINE BOOLEAN PhTryAcquireReleaseQueuedLockExclusive | ( | _Inout_ PPH_QUEUED_LOCK | QueuedLock | ) |
Definition at line 276 of file queuedlock.h.
PH_QUEUED_WAIT_BLOCK |
Definition at line 52 of file queuedlock.h.
* PPH_QUEUED_WAIT_BLOCK |
Definition at line 52 of file queuedlock.h.