fltAcquirePushLockExclusive 函数 (fltkernel.h)

FltAcquirePushLockExclusive 宏获取给定的推送锁,以便由调用线程进行独占访问。

语法

VOID FLTAPI FltAcquirePushLockExclusive(
  [in, out] PEX_PUSH_LOCK PushLock
);

参数

[in, out] PushLock

PEX_PUSH_LOCK 类型的不透明推送锁指针。 此指针必须已通过先前对 FltInitializePushLock 的调用进行初始化。

返回值

无。

备注

FltAcquirePushLockExclusive 获取给定的推送锁,以便调用线程进行独占访问。

推送锁类似于 ERESOURCE 结构 (也称为资源) ,因为它们可以获取共享或独占访问。 有关推送锁的详细信息,请参阅 FltInitializePushLock 的参考条目。

与 ERESOURCE 结构不同,推送锁不能以递归方式获取。 如果调用方已获取独占或共享访问的推送锁,线程将挂起。

何时向调用方授予对给定推送锁的独占访问权限取决于以下各项:

  • 如果推送锁当前是无所有者的,则会立即授予对当前线程的独占访问权限。

  • 如果另一个线程已获取推送锁进行独占或共享访问,则当前线程将进入等待状态,直到可以获取推送锁。

由于 FltAcquirePushLockExclusive 禁用正常的内核 APC 传递,因此在调用 FltAcquirePushLockExclusive 之前,无需调用 KeEnterCriticalRegionFsRtlEnterFileSystem

若要在获取推送锁后释放它,请调用 FltReleasePushLock。 对 FltAcquirePushLockExclusive 的每个调用都必须与对 FltReleasePushLock 的后续调用相匹配。

若要获取用于共享访问的推送锁,请调用 FltAcquirePushLockShared

若要初始化推送锁,请调用 FltInitializePushLock

若要删除推送锁,请调用 FltDeletePushLock

要求

要求
目标平台 通用
标头 fltkernel.h (包括 Fltkernel.h)
Library FltMgr.lib
IRQL <= APC_LEVEL

另请参阅

FltAcquirePushLockExclusiveEx

FltAcquirePushLockShared

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion