次の方法で共有


ExInterlockedPopEntrySList 関数 (wdm.h)

ExInterlockedPopEntrySList ルーチンは、シーケンスされた 1 つのリンクされたリストから最初のエントリをアトミックに削除します。

構文

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

パラメーター

[in, out] ListHead

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

[in, out] Lock

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

戻り値

ExInterlockedPopEntrySList は、 リストの最初の SLIST_ENTRY 構造体へのポインターを返します。 リストが空の場合、ルーチンは NULL を返します。

注釈

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

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

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

要件

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

こちらもご覧ください

ExInitializeSListHead

ExInterlockedPushEntrySList

ExInterlockedRemoveHeadList

ExQueryDepthSList

KeInitializeSpinLock