RemoveEntryList 関数 (wdm.h)

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

構文

BOOLEAN RemoveEntryList(
  [in] PLIST_ENTRY Entry
);

パラメーター

[in] Entry

削除するエントリを表す LIST_ENTRY 構造体へのポインター。

戻り値

RemoveEntryList は、指定されたエントリを削除した後、リストが空の場合に TRUE を 返します。 それ以外の場合、ルーチンは FALSE を 返して、結果のリストに 1 つ以上のエントリが含まれていることを示します。 詳細については、以下の 「解説 」セクションを参照してください。

注釈

RemoveEntryList は、Entry の前のエントリの Flink メンバーを Entry の後のエントリを指し、Entry の後のエントリの Blink メンバーが Entry の前のエントリをポイントするように設定することで、エントリを削除します

戻り値を使用して、最後のエントリがリストから削除された日時を検出できます。 空のリストは、リストヘッドのみで構成され、リストエントリはありません。

通常、 Entry はリスト内のエントリを指し、リストの先頭は指しません。 ただし、 Entry はリスト ヘッドを指すことができます。その場合、ルーチンはリストからリストヘッドを削除してヘッドレス リストを生成します。 この方法で RemoveEntryList を使用する場合、通常、戻り値は無視する必要があります。 リストが空かどうかを確認するには、 IsListEmpty ルーチンを使用します。

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

RemoveEntryList の呼び出し元は、任意の IRQL で実行できます。 IRQL >= DISPATCH_LEVEL で RemoveEntryList が呼び出される場合、リスト エントリのストレージは常駐である必要があります。

要件

要件
対象プラットフォーム デスクトップ
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h、Wudfwdm.h を含む)
IRQL 任意のレベル (「解説」セクションを参照)
DDI コンプライアンス規則 DoubleExFreePool(storport)

こちらもご覧ください

InitializeListHead

IsListEmpty

RemoveHeadList

RemoveTailList