FltAcquirePushLockShared - NtDoc

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

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

NtDoc

No description available.

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

FltAcquirePushLockShared macro

Description

The FltAcquirePushLockShared routine acquires the given push lock for shared access by the calling thread.

Parameters

PushLock [in, out]

Opaque push lock pointer of type PEX_PUSH_LOCK. This pointer must have been initialized by a previous call to FltInitializePushLock.

Return value

None.

Remarks

The FltAcquirePushLockShared routine acquires the given push lock for shared access by the calling thread.

Push locks are similar to ERESOURCE structures (also called resources) in that they can be acquired for shared or exclusive access. For more information about push locks, see the reference entry for FltInitializePushLock.

Unlike ERESOURCE structures, push locks cannot be acquired recursively. If the caller already has acquired the push lock for exclusive access, the system will hang. If the caller already has acquired the push lock for shared access, it can receive shared access again. However, each call to FltAcquirePushLockShared must be matched by a subsequent call to FltReleasePushLock.

When the caller will be given shared access to the given push lock depends on the following:

Because FltAcquirePushLockShared disables normal kernel APC delivery, it is not necessary to call KeEnterCriticalRegion or FsRtlEnterFileSystem before calling FltAcquirePushLockShared.

To release the push lock after it is acquired, call FltReleasePushLock. Every call to FltAcquirePushLockShared must be matched by a subsequent call to FltReleasePushLock.

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

To initialize a push lock, call FltInitializePushLock.

To delete a push lock, call FltDeletePushLock.

See also

FltAcquirePushLockExclusive

FltAcquirePushLockSharedEx

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion