共用方式為


ERESOURCE 結構和常式

本文說明 ERESOURCE 結構,以及在其上運作的系統提供常式。 您可以使用 ERESOURCE 結構在驅動程式中實作讀取/寫入鎖定。

ERESOURCE 結構

ERESOURCE 結構可用來管理共用資源的存取權。 它提供了一種機制來同步處理對可在多個執行緒之間共用的資源的存取。

ERESOURCE 結構不透明;也就是說,其成員保留供系統使用。

ERESOURCE 的儲存體必須從非分頁集區配置。

ERESOURCE 例程

系統提供常式來取得和釋放 ERESOURCE 結構,以及檢查其目前狀態。

取得和釋放 ERESOURCE 結構體

驅動程式可以使用ERESOURCE結構來實作 獨佔/共用同步處理。 獨佔/共用同步處理的運作方式如下:

  • 任何數量的線程都可以以共享方式取得ERESOURCE。

  • 只有一個線程可以獨佔取得ERESOURCE。 只有在沒有執行程已取得 ERESOURCE 作為共用時,才能獨佔取得 ERESOURCE。

目前無法取得 ERESOURCE 的執行緒可以選擇性地處於等候狀態,直到可以取得 ERESOURCE 為止。 系統會維護兩份正在等候ERESOURCE的線程清單:獨佔等候者和共用等候者清單。

獨佔/共享同步通常用於實作讀寫鎖。 讀取/寫入鎖定允許數個線程執行讀取作業,但一次只能寫入一個線程。 這種情境可以直接在取得 ERESOURCE 方面實現。

驅動程式會配置 ERESOURCE 的記憶體,並使用 ExInitializeResourceLite 將其初始化。 系統會維護使用中所有ERESOURCE結構的清單。 當驅動程式不再需要特定的ERESOURCE時,它必須呼叫 ExDeleteResourceLite ,才能從系統清單中刪除它。 驅動程式也可以藉由呼叫 ExReinitializeResourceLite 來重複使用 ERESOURCE。

驅動程式可以在ERESOURCE上執行下列基本作業:

ExAcquireResourceSharedLiteExAcquireResourceExclusiveLiteWait 參數會判斷目前的線程是否等待取得 ERESOURCE。 如果您指定 FALSE 值,且無法取得 ERESOURCE,則常式會傳回 FALSE。 如果您指定 TRUE 值,則目前的執行緒會放在 ERESOURCE 的適當等候清單上。

檢查 ERESOURCE 結構的狀態

驅動程式也可以判斷ERESOURCE的目前狀態,如下所示: