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 的目前狀態,如下所示: