ExAcquirePushLockShared 宏 (wdm.h)
获取由调用线程进行共享访问的给定推送锁。
语法
void ExAcquirePushLockShared(
Lock
);
参数
Lock
不透明推送锁指针。 此指针必须由上一次调用来初始化 ExInitializePushLock。
返回值
没有
言论
推送锁类似于 ERESOURCE 结构(也称为资源),因为它们可以获取共享或独占访问。 有关推送锁的详细信息,请参阅 ExInitializePushLock的参考条目。
与 ERESOURCE 结构不同,无法以递归方式获取推送锁。 如果调用方已获取推送锁进行独占访问,系统将挂起。 如果调用方已获取共享访问的推送锁,则它可以再次接收共享访问。
若要在获取推送锁后释放推送锁,请调用 ExReleasePushLockShared。 每次调用 ExAcquirePushLockShared 都必须匹配对 ExReleasePushLockShared的后续调用。
当向调用方提供对给定推送锁的共享访问权限时,取决于以下情况:
如果推送锁当前未拥有,则立即向当前线程授予共享访问权限。
如果已获取推送锁供另一个线程共享访问,并且没有线程正在等待对推送锁的独占访问,则立即向调用方授予共享访问权限。 如果存在排他服务员,则调用方将进入等待状态。
如果已获取推送锁供另一个线程进行独占访问,或者如果有另一个线程等待独占访问,则当前线程将进入等待状态,直到可以获取推送锁。
在调用此例程之前,驱动程序必须通过调用 KeEnterCriticalRegion来禁用正常的内核 APC 传递。 通过调用 KeLeaveCriticalRegion释放推送锁后可重新传送。 有关详细信息,请参阅 禁用 APC。
若要获取用于独占访问的推送锁,请调用 ExAcquirePushLockExclusive。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 10 版本 1809 |
标头 | wdm.h |