次の方法で共有


ExInterlockedRemoveHeadList 関数 (wdm.h)

ExInterlockedRemoveHeadList ルーチンは、LIST_ENTRY構造体の二重にリンクされたリストの先頭からエントリ削除します。

構文

PLIST_ENTRY ExInterlockedRemoveHeadList(
  [in, out] PLIST_ENTRY ListHead,
  [in, out] PKSPIN_LOCK Lock
);

パラメーター

[in, out] ListHead

リスト ヘッダーとして機能する LIST_ENTRY 構造体へのポインター。

[in, out] Lock

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

戻り値

ExInterlockedRemoveHeadList は、リストから削除された LIST_ENTRY 構造体へのポインターを返します。 リストが空の場合、ルーチンは NULL を返します。

注釈

ExInterlockedRemoveHeadListRemoveHeadList と同様の操作を実行しますが、アトミックに実行します。 同じリストでアトミック呼び出しと非アトミック呼び出しを混在させないでください。

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

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

要件

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

こちらもご覧ください

ExInterlockedInsertHeadList

ExInterlockedInsertTailList

InitializeListHead

KeInitializeSpinLock

RemoveHeadList