共用方式為


NdisInitializeReadWriteLock 函式 (ndis.h)

NdisInitializeReadWriteLock 函式會初始化 NDIS_RW_LOCK 類型的讀取或寫入鎖定變數。

注意 NDIS 6.20 和更新版本的驅動程式已淘汰讀寫鎖定介面,其應該使用 NdisAllocateRWLock ,而不是 NdisInitializeReadWriteLock
 

語法

void NdisInitializeReadWriteLock(
  [out] PNDIS_RW_LOCK Lock
);

參數

[out] Lock

代表鎖定的不透明 NDIS_RW_LOCK 變數指標。 呼叫端可以使用此鎖定來取得非ISR驅動程式線程之間共用資源的寫入或讀取許可權。

傳回值

備註

NDIS_RW_LOCK變數可用來一次將共用資源的寫入許可權限限為一個非ISR驅動程式線程。 此 NDIS_RW_LOCK 可允許多個非ISR驅動程式線程同時讀取這些資源。 寫入存取期間不允許這類讀取存取。

傳遞至 NdisInitializeReadWriteLockLock 指標是所有其他 Ndis 的必要參數。ReadWriteLock 函式。

在驅動程式呼叫 NdisAcquireReadWriteLock 函式以取得資源的寫入或讀取許可權之前,驅動程式必須呼叫 NdisInitializeReadWriteLock ,以初始化與該資源相關聯的鎖定。 呼叫端必須在 Lock 提供變數的非分頁記憶體。

呼叫 NdisInitializeReadWriteLock 之後,驅動程式可以呼叫 NdisAcquireReadWriteLock 來取得資源的寫入或讀取許可權。 一次只有一個非ISR驅動程式線程可以取得資源的寫入許可權。 當一個非ISR線程具有寫入許可權時,其他非ISR線程的所有讀取和寫入存取都必須等到寫入許可權持有者釋放鎖定為止。 不過,如果非ISR線程具有讀取許可權,其他非ISR線程可以同時取得讀取許可權。

針對經常存取的資源,初始化並使用這種類型的鎖定進行讀取,而且不常存取以進行寫入。

資源存取完成後,驅動程式會呼叫 NdisReleaseReadWriteLock 函式。

驅動程式初始化的每個鎖定都會執行下列其中一項動作:

  • 保護在 IRQL <= DISPATCH_LEVEL 上執行的驅動程式線程同時寫入和讀取存取的一組離散共用資源。
  • 公開一組離散的共享資源,讓在 IRQL 執行 <= DISPATCH_LEVEL的驅動程式線程同時讀取存取。
NdisInitializeReadWriteLock 的呼叫端可以在任何 IRQL 上執行。 呼叫端通常會在 IRQL = PASSIVE_LEVEL初始化期間執行。

規格需求

需求
最低支援的用戶端 已淘汰 NDIS 6.20 和更新版本的驅動程式,其應該使用 NdisAllocateRWLock,而不是 NdisInitializeReadWriteLock。 支援 NDIS 6.0 和 NDIS 5.1 驅動程式 (請參閱 Windows Vista 中的 NdisInitializeReadWriteLock (NDIS 5.1) ) 。 支援 NDIS 5.1 驅動程式 (請參閱 Windows XP 中的 NdisInitializeReadWriteLock (NDIS 5.1) ) 。
目標平台 Universal
標頭 ndis.h (包括 Ndis.h)
程式庫 Ndis.lib
Dll Ndis.sys
IRQL 任何層級 (請參閱一節)

另請參閱

NdisAcquireReadWriteLock

NdisReleaseReadWriteLock