exAcquirePushLockShared 宏 (wdm.h)

获取由调用线程共享访问的给定推送锁。

语法

void ExAcquirePushLockShared(
   Lock
);

参数

Lock

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

返回值

备注

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

与 ERESOURCE 结构不同,推送锁不能以递归方式获取。 如果调用方已获取独占访问的推送锁,系统将挂起。 如果调用方已获取共享访问的推送锁,则可以再次接收共享访问。

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

何时向调用方授予对给定推送锁的共享访问权限取决于以下内容:

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

  • 如果另一个线程已获取推送锁以便进行共享访问,并且没有线程正在等待对推送锁的独占访问,则会立即向调用方授予共享访问权限。 如果有排他服务员,则调用方将进入等待状态。

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

在调用此例程之前,驱动程序必须通过调用 KeEnterCriticalRegion 来禁用正常的内核 APC 传递。 通过调用 KeLeaveCriticalRegion 在释放推送锁后重新启用了传递。 有关详细信息,请参阅 禁用 APC

若要获取用于独占访问的推送锁,请调用 ExAcquirePushLockExclusive

要求

要求
最低受支持的客户端 Windows 10 版本 1809
标头 wdm.h

另请参阅

ExInitializePushLock

KeEnterCriticalRegion

ExReleasePushLockShared

ExAcquirePushLockExclusive