NdisInterlockedInsertTailList 宏 (ndis.h)
NdisInterlockedInsertTailList 函式會插入專案,通常是封包,位於多任務連結清單的結尾,以便以多重處理器安全的方式同步處理清單的存取。
語法
void NdisInterlockedInsertTailList(
[in] _ListHead,
[in] _ListEntry,
[in] _SpinLock
);
參數
[in] _ListHead
要插入專案之雙連結清單前端的指標。
[in] _ListEntry
要插入清單結尾之專案的指標。
[in] _SpinLock
呼叫端提供的微調鎖定指標,用來同步存取清單。
傳回值
無
備註
在呼叫 NdisInterlockedInsertTailList 之前,驅動程式必須先使用 NdisInitializeListHead 函式初始化 ListHead 上的變數,並使用 NdisAllocateSpinLock 函式在 SpinLock 上初始化變數。 驅動程式也必須提供這些變數及其內部佇列的駐留記憶體。
呼叫端提供的微調鎖定可防止任何其他函式存取驅動程序的內部佇列,而 NdisInterlockedInsertTailList 正在插入指定的專案,即使驅動程式是在多處理器計算機上執行也一樣。
NdisInterlockedInsertTailList 會在取得指定的微調鎖定並在傳回控制權之前還原原始 IRQL 時,引發 IRQL DISPATCH_LEVEL。 因此,呼叫 NdisInterlockedInsertTailList 的任何驅動程式函式都不能是可分頁的程式代碼。
若要將傳回的值轉換回插入專案的位址,驅動程式可以使用 CONTAINING_RECORD 宏。
如果在 IRQL >= DISPATCH_LEVEL 呼叫 NdisInterlockedInsertTailList,則 ListHead 參數和列表專案的記憶體必須位於其中。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | (支援 NDIS 6.0 和 NDIS 5.1 驅動程式,請參閱 Windows Vista 中的 NdisInterlockedInsertTailList (NDIS 5.1) ) 。 (支援 NDIS 5.1 驅動程式,請參閱 Windows XP 中的 NdisInterlockedInsertTailList (NDIS 5.1) ) 。 |
目標平台 | Universal |
標頭 | ndis.h (包含 Ndis.h) |
程式庫 | Ndis.lib |
IRQL | 任何層級 |