ExInterlockedPushEntryList 関数 (wdm.h)
ExInterlockedPushEntryList ルーチンは、SINGLE_LIST_ENTRY構造体の個別にリンクされたリストの先頭に、エントリをアトミックに挿入します。
構文
PSINGLE_LIST_ENTRY ExInterlockedPushEntryList(
[in, out] PSINGLE_LIST_ENTRY ListHead,
[in, out] __drv_aliasesMem PSINGLE_LIST_ENTRY ListEntry,
[in, out] PKSPIN_LOCK Lock
);
パラメーター
[in, out] ListHead
リスト ヘッダーとして機能する SINGLE_LIST_ENTRY 構造体へのポインター。 ListHead のストレージは、すべての IRQL に常駐している必要があります。
[in, out] ListEntry
リストに挿入するエントリを表す SINGLE_LIST_ENTRY 構造体へのポインター。 ListEntry のストレージは、すべての IRQL に常駐している必要があります。
[in, out] Lock
リストへのアクセスを同期するために使用されるスピン ロックとして機能する KSPIN_LOCK 構造体へのポインター。 スピン ロックのストレージは常駐であり、 KeInitializeSpinLock を呼び出して初期化されている必要があります。 このスピン ロックは、 ExInterlockedXxxList ルーチンでのみ使用する必要があります。
戻り値
ExInterlockedPushEntryList は、新しいエントリが挿入される 前 のリストの最初のエントリへのポインターを返します。 リストが空の場合、ルーチンは NULL を返します。
注釈
ExInterlockedPushEntryList は PushEntryList と同じ操作を実行しますが、アトミックに実行します。 同じリストでアトミック呼び出しと非アトミック呼び出しを混在させないでください。
このルーチンを使用して 1 つのリンクリストを実装する方法の詳細については、「Singly および Doubly Linked Lists」を参照してください。
ExInterlockedPushEntryList ルーチンは、任意の IRQL で呼び出すことができます。 ListHead パラメーターとリスト エントリのストレージは、すべての IRQLs に常駐している必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | 任意のレベル (「解説」セクションを参照) |
DDI コンプライアンス規則 | IoAllocateFree(wdm), IoReuseIrp(wdm), MarkingInterlockedQueuedIrps(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) |