次の方法で共有


ExInterlockedPushEntrySList マクロ (wdm.h)

ExInterlockedPushEntrySList ルーチンは、一連の一連のリンク リストの先頭にエントリをアトミックに挿入します。

構文

NTKERNELAPI
PSLIST_ENTRY
FASTCALL
ExInterlockedPushEntrySList (
    _Inout_ PSLIST_HEADER ListHead,
    _Inout_ __drv_aliasesMem PSLIST_ENTRY ListEntry,
    _Inout_opt_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock
    );

パラメーター

ListHead

1 つの順序でリンクされたリストのヘッダーとして機能する、 SLIST_HEADER 構造体へのポインター。 ListHeadExInitializeSListHead を呼び出して初期化されている必要があります。

ListEntry

挿入する呼び出し元によって割り当てられたエントリへのポインター。

[in, out] Lock

リストへのアクセスを同期するために使用されるスピン ロックとして機能する KSPIN_LOCK 構造体へのポインター。 スピン ロックのストレージは常駐であり、 KeInitializeSpinLock を呼び出して初期化されている必要があります。 このスピン ロックは、 ExInterlockedXxxList ルーチンでのみ使用する必要があります。

戻り値

指定したリストにエントリがある場合、 ExInterlockedPushEntrySList は 、リストのエントリであった最初 のSLIST_ENTRY 構造体へのポインターを返します。それ以外の場合は、NULL を返します。

注釈

このルーチンを使用して、1 つの順序でリンクされたリストを実装する方法の詳細については、「Singly と二重にリンクされたLists」を参照してください。

Windows 2000 では、ドライバーは -D_WIN2K_COMPAT_SLIST_USAGE スイッチを使用して 、ExInterlockedPushEntrySList を使用するコードを正常にリンクする必要があります。

ExInterlockedPushEntrySList ルーチンは、任意の IRQL で呼び出すことができます。 ListHead パラメーターとリスト エントリのストレージは、すべての IRQL に常駐している必要があります。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 任意のレベル (「解説」セクションを参照)

こちらもご覧ください

ExInitializeSListHead

ExInterlockedInsertTailList

ExInterlockedPopEntrySList

ExQueryDepthSList

KeInitializeSpinLock