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 等例程,以判斷目前線程是否具有資源的獨佔存取權。
- 推入鎖定無法以遞歸方式取得。
若要取得或釋放獨佔存取的推送鎖定,請分別呼叫 exAcquirePushLockExclusive 或 ExReleasePushLockExclusive。
若要取得或釋放共用存取的推送鎖定,請分別呼叫 ExAcquirePushLockShared 或 ExReleasePushLockShared。
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 10 版本 1809 |
標頭 | wdm.h |