ExInitializePushLock 函数 (wdm.h)
初始化推送锁变量。
语法
void ExInitializePushLock(
[Out] PEX_PUSH_LOCK PushLock
);
参数
[Out] PushLock
指向调用方提供的存储的指针,该存储必须至少为 sizeof(EX_PUSH_LOCK),才能初始化推送锁变量。 存储必须在 32 位平台上对齐 4 字节,并且 64 位平台上对齐 8 字节。
返回值
没有
言论
推送锁类似于 ERESOURCE 结构(也称为“资源”),方法如下:
- 推送锁可用于一组线程的同步。
- 可以获取推送锁进行共享或独占访问。
- 尽管调用方为推送锁变量提供存储,但EX_PUSH_LOCK结构不透明:即,其成员保留供系统使用。
推送锁在 ERESOURCE 结构上具有以下优势:
- 当推送锁主要用于共享访问时,它们比 ERESOURCE 结构更高效。
- 可以从分页池或非分页池分配推送锁的存储。 只能从非分页池分配 ERESOURCE 结构。
- EX_PUSH_LOCK结构比 ERESOURCE 结构小得多。
与 ERESOURCE 结构相比,推送锁具有以下缺点:
- 授予独占访问权限的算法对所有线程都不公平。 如果存在高级别的独占锁争用,则无法保证线程将被授予独占访问权限的顺序。
- 没有用于确定推送锁的当前所有者的支持例程。 (ERESOURCE 结构的用户可以调用例程,如 ExIsResourceAcquiredExclusiveLite,以确定当前线程是否具有对资源的独占访问权限。
- 无法以递归方式获取推送锁。
若要获取或释放推送锁进行独占访问,请分别调用 ExAcquirePushLockExclusive 或 ExReleasePushLockExclusive。
若要获取或释放用于共享访问的推送锁,请分别调用 ExAcquirePushLockShared 或 ExReleasePushLockShared。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 10 版本 1809 |
标头 | wdm.h |