94 lines
1.7 KiB
C
94 lines
1.7 KiB
C
#ifndef _PH_FASTLOCK_H
|
|
#define _PH_FASTLOCK_H
|
|
|
|
// FastLock is a port of FastResourceLock from PH 1.x.
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct _PH_FAST_LOCK
|
|
{
|
|
ULONG Value;
|
|
HANDLE ExclusiveWakeEvent;
|
|
HANDLE SharedWakeEvent;
|
|
} PH_FAST_LOCK, *PPH_FAST_LOCK;
|
|
|
|
#define PH_FAST_LOCK_INIT { 0, NULL, NULL }
|
|
|
|
PHLIBAPI
|
|
VOID
|
|
NTAPI
|
|
PhInitializeFastLock(
|
|
_Out_ PPH_FAST_LOCK FastLock
|
|
);
|
|
|
|
PHLIBAPI
|
|
VOID
|
|
NTAPI
|
|
PhDeleteFastLock(
|
|
_Inout_ PPH_FAST_LOCK FastLock
|
|
);
|
|
|
|
#define PhAcquireFastLockExclusive PhfAcquireFastLockExclusive
|
|
_May_raise_
|
|
_Acquires_exclusive_lock_(*FastLock)
|
|
PHLIBAPI
|
|
VOID
|
|
FASTCALL
|
|
PhfAcquireFastLockExclusive(
|
|
_Inout_ PPH_FAST_LOCK FastLock
|
|
);
|
|
|
|
#define PhAcquireFastLockShared PhfAcquireFastLockShared
|
|
_May_raise_
|
|
_Acquires_shared_lock_(*FastLock)
|
|
PHLIBAPI
|
|
VOID
|
|
FASTCALL
|
|
PhfAcquireFastLockShared(
|
|
_Inout_ PPH_FAST_LOCK FastLock
|
|
);
|
|
|
|
#define PhReleaseFastLockExclusive PhfReleaseFastLockExclusive
|
|
_Releases_exclusive_lock_(*FastLock)
|
|
PHLIBAPI
|
|
VOID
|
|
FASTCALL
|
|
PhfReleaseFastLockExclusive(
|
|
_Inout_ PPH_FAST_LOCK FastLock
|
|
);
|
|
|
|
#define PhReleaseFastLockShared PhfReleaseFastLockShared
|
|
_Releases_shared_lock_(*FastLock)
|
|
PHLIBAPI
|
|
VOID
|
|
FASTCALL
|
|
PhfReleaseFastLockShared(
|
|
_Inout_ PPH_FAST_LOCK FastLock
|
|
);
|
|
|
|
#define PhTryAcquireFastLockExclusive PhfTryAcquireFastLockExclusive
|
|
_When_(return != 0, _Acquires_exclusive_lock_(*FastLock))
|
|
PHLIBAPI
|
|
BOOLEAN
|
|
FASTCALL
|
|
PhfTryAcquireFastLockExclusive(
|
|
_Inout_ PPH_FAST_LOCK FastLock
|
|
);
|
|
|
|
#define PhTryAcquireFastLockShared PhfTryAcquireFastLockShared
|
|
_When_(return != 0, _Acquires_shared_lock_(*FastLock))
|
|
PHLIBAPI
|
|
BOOLEAN
|
|
FASTCALL
|
|
PhfTryAcquireFastLockShared(
|
|
_Inout_ PPH_FAST_LOCK FastLock
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|