次の方法で共有


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 構造体へのポインター。 ListHead は、ExInitializeSListHead 呼び出すことによって初期化されている必要があります。

[in, out] Lock

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

戻り値

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

備考

このルーチンを使用してシーケンスされた 1 つのリンクリストを実装する方法の詳細については、「Singly および Doubly Linked Listsを参照してください。

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任意のレベル (「解説」セクションを参照)

関連項目

ExInitializeSListHead

ExInterlockedPushEntrySList

ExInterlockedRemoveHeadList する

ExQueryDepthSList

KeInitializeSpinLock