ExFreeToPagedLookasideList 関数 (wdm.h)

ExFreeToPagedLookasideList ルーチンは、指定されたルックアサイド リストまたはページ プールにページング可能なエントリを返します。

構文

void ExFreeToPagedLookasideList(
  [in, out] PPAGED_LOOKASIDE_LIST Lookaside,
  [in]      PVOID                 Entry
);

パラメーター

[in, out] Lookaside

呼び出し元が ExInitializePagedLookasideList で既に初期化されている、ルックアサイド リストのPAGED_LOOKASIDE_LIST構造体へのポインター。呼び出し元は ExInitializePagedLookasideList で既に初期化されています。

[in] Entry

解放するエントリへのポインター。 呼び出し元は、 ExAllocateFromPagedLookasideList の前の呼び出しからこのポインターを取得しました。

戻り値

なし

解説

注意事項

バージョン 22H2 Windows 11以降、この関数はインラインからエクスポートに変更されました。 その結果、最新バージョンの Windows を対象にしてドライバーをビルドすると、古い OS バージョンでは読み込みに失敗します。 Visual Studio でターゲット OS のバージョンを変更するには、[構成プロパティ] -[ドライバーの設定] ->>[全般] の順に選択します。

ExFreeToPagedLookasideList、ExAllocateFromPagedLookasideList の逆数です。 呼び出し元によって割り当てられたエントリは、呼び出し元のルックアサイド リストまたはページ プールに解放されます。このエントリが使用されなくなった場合は、

同じエントリを再割り当てすることも、後で ExAllocateFromPagedLookasideList を呼び出して別のエントリを割り当てることもできます。 ルックアサイド リストのユーザーは、 ExDeletePagedLookasideList を呼び出すまで、必要に応じてこのようなエントリを動的に割り当てて解放できます。 ExDeletePagedLookasideList は、指定されたルックアサイド リストのシステム状態をクリアしてコントロールを返す前に、リスト内の未処理のエントリを解放します。

指定したルックアサイド リストがまだシステムによって決定されたエントリの最大数に達していない場合、 ExFreeToPagedLookasideList は指定されたエントリをリストの先頭に挿入します。 それ以外の場合、呼び出し元から提供された Free ルーチン (存在する場合) を使用して、Entry のバッファーがページ プールに解放されます。このルーチンは、ルックアサイド リストが初期化されたときまたは ExFreePool のときに設定されました。

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

詳細については、「Lookaside Listsの使用」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

ExAllocateFromPagedLookasideList

ExDeletePagedLookasideList

ExInitializePagedLookasideList

PAGED_LOOKASIDE_LIST