ExInitializePushLock 函式 (wdm.h)

初始化推送鎖定變數。

語法

C++
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 等例程,以判斷目前線程是否具有資源的獨佔存取權。
  • 推入鎖定無法以遞歸方式取得。

若要取得或釋放獨佔存取的推送鎖定,請分別呼叫 exAcquirePushLockExclusiveExReleasePushLockExclusive

若要取得或釋放共用存取的推送鎖定,請分別呼叫 ExAcquirePushLockSharedExReleasePushLockShared

要求

要求 價值
最低支援的用戶端 Windows 10 版本 1809
標頭 wdm.h