exInitializePushLock 函数 (wdm.h)

初始化推送锁变量。

语法

void ExInitializePushLock(
  [Out] PEX_PUSH_LOCK PushLock
);

参数

[Out] PushLock

指向调用方提供的存储的指针,该存储必须至少为 size of (EX_PUSH_LOCK) 的值,才能初始化推送锁变量。 存储必须在 32 位平台上对齐 4 字节,在 64 位平台上必须是 8 字节对齐的。

返回值

备注

推送锁类似于 ERESOURCE 结构, (也称为“资源”) 通过以下方式:

  • 推送锁可由一组线程用于同步。
  • 可以获取推送锁进行共享或独占访问。
  • 尽管调用方为推送锁变量提供存储,但EX_PUSH_LOCK结构是不透明的:也就是说,其成员保留供系统使用。

与 ERESOURCE 结构比较,推送锁具有以下优势:

  • 当推送锁主要为共享访问获取时,它们比 ERESOURCE 结构更有效。
  • 推送锁的存储可以从分页池或非分页池中分配。 只能从非分页池分配 ERESOURCE 结构。
  • EX_PUSH_LOCK结构比 ERESOURCE 结构小得多。

与 ERESOURCE 结构相比,推送锁具有以下缺点:

  • 授予独占访问权限的算法对所有线程都不公平。 如果存在高级别的排他锁争用,则无法保证授予线程独占访问权限的顺序。
  • 没有用于确定推送锁的当前所有者的支持例程。 (ERESOURCE 结构的用户可以调用 ExIsResourceAcquiredExclusiveLite 等例程来确定当前线程是否对 resource.)
  • 无法以递归方式获取推送锁。

若要获取或释放推送锁以独占访问,请分别调用 ExAcquirePushLockExclusiveExReleasePushLockExclusive

若要获取或释放用于共享访问的推送锁,请分别调用 ExAcquirePushLockSharedExReleasePushLockShared

要求

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