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