FltInitializePushLock - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// fltkernel.h

VOID FLTAPI FltInitializePushLock(
  [out] PEX_PUSH_LOCK PushLock
);
View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (nf-fltkernel-fltinitializepushlock)

FltInitializePushLock function

Description

The FltInitializePushLock routine initializes a push lock variable.

Parameters

PushLock [out]

Pointer to the caller-supplied storage, which must be at least the value of sizeof(EX_PUSH_LOCK), for the push lock variable to be initialized. The storage must be 4-byte aligned on 32-bit platforms, and 8-byte aligned on 64-bit platforms.

Return value

None

Remarks

A push lock is a synchronization primitive used to manage access to shared resources by multiple threads. Push locks are similar to ERESOURCE structures (also called "resources") in the following ways:

Push locks might not be the right choice for file system minifilters, because some of their characteristics can be incompatible with the inherently re-entrant nature of file systems.

Push locks have the following disadvantages when compared with ERESOURCE structures:

Push locks offer the following advantages over ERESOURCE structures:

Unless any of these advantages are compelling, an ERESOURCE is usually the more robust and maintainable solution to the Read/Write synchronization problem.

To acquire a push lock for exclusive access, callFltAcquirePushLockExclusive.

To acquire a push lock for shared access, call FltAcquirePushLockExclusive.

To release a push lock, call FltReleasePushLock.

To delete a push lock, call FltDeletePushLock.

See also

ExIsResourceAcquiredExclusiveLite

FltAcquirePushLockExclusive

FltAcquirePushLockShared

FltDeletePushLock

FltReleasePushLock