exInterlockedInsertHeadList 函式 (wdm.h)

ExInterlockedInsertHeadList 例程會以不可部分完成的方式,在LIST_ENTRY結構的兩次連結清單開頭插入專案。

語法

PLIST_ENTRY ExInterlockedInsertHeadList(
  [in, out] PLIST_ENTRY                  ListHead,
  [in, out] __drv_aliasesMem PLIST_ENTRY ListEntry,
  [in, out] PKSPIN_LOCK                  Lock
);

參數

[in, out] ListHead

做為清單標頭 之LIST_ENTRY 結構的指標。

[in, out] ListEntry

LIST_ENTRY 結構的指標,表示要插入清單的專案。

[in, out] Lock

KSPIN_LOCK結構的指標,做為用來同步存取清單的微調鎖定。 微調鎖定的記憶體必須是固定的,而且必須已藉由呼叫 KeInitializeSpinLock 來初始化。 您只能搭配 ExInterlockedXxx 清單 例程使用此微調鎖定。

傳回值

ExInterlockedInsertHeadList 會在插入新專案 之前 ,傳回清單第一個專案的指標。 如果清單是空的,則例程會傳回 NULL

備註

ExInterlockedInsertHeadList 會執行與 InsertHeadList 相同的作業,但不可部分完成。 請勿在相同的清單上混合不可部分完成和非不可部分完成的呼叫。

如需使用此例程實作雙連結清單的詳細資訊,請參閱Singly和 Doubly Linked 清單

任何 IRQL 都可以呼叫 ExInterlockedInsertHeadList 例程。 ListHead 參數和清單專案的記憶體必須位於所有 IRCL。

規格需求

需求
最低支援的用戶端 從 Windows 2000 開始提供。
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL 任何層級 (請參閱一節)
DDI 合規性規則 IoAllocateFree (wdm) IoReuseIrp (wdm) MarkInterlockedQueuedIrps (wdm) RemoveLockCheck (wdm) 、 RemoveLockForward (wdm) RemoveLockForward2 (wdm) (RemoveLockForwardDeviceControl (wdm) RemoveLockForwardDeviceControl2 (wdm) RemoveLockForwardDeviceControlInternal (wdm ) 、 RemoveLockForwardDeviceControlInternal2 (wdm) RemoveLockForwardRead (wdm) RemoveLockForwardRead2 (wdm) RemoveLockForwardWrite (wdm) RemoveLockForwardWrite2 (wdm) 、 RemoveLockRelease2 (wdm () RemoveLockReleaseCleanup (wdm) RemoveLockReleaseClose (wdm) RemoveLockReleaseCreate (wdm) RemoveLockReleaseDeviceControl (wdm) RemoveLockReleaseInternalDeviceControl (wdm) RemoveLockReleasePower (wdm) RemoveLockReleaseRead (wdm) RemoveLockReleaseShutdown (wdm) RemoveLockReleaseSystemControl (wdm) RemoveLockReleaseWrite (wdm)

另請參閱

ExInterlockedInsertTailList

ExInterlockedRemoveHeadList

InitializeListHead

InsertHeadList

KeInitializeSpinLock