ExAllocateFromPagedLookasideList 関数 (wdm.h)

ExAllocateFromPagedLookasideList ルーチンは、指定されたルックアサイド リストからページングされたエントリへのポインターを返すか、新しく割り当てられたページ エントリへのポインターを返します。

構文

PVOID ExAllocateFromPagedLookasideList(
  [in, out] PPAGED_LOOKASIDE_LIST Lookaside
);

パラメーター

[in, out] Lookaside

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

戻り値

ExAllocateFromPagedLookasideList は、エントリを割り当てることができる場合は、エントリへのポインターを返します。 それ以外の場合は、 NULL を返します。

解説

注意事項

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

指定されたルックアサイド リストが空でない場合、 ExAllocateFromPagedLookasideList はリストから最初のエントリを削除し、このエントリへのポインターを返します。 それ以外の場合、 ExAllocateFromPagedLookasideList は、リストの初期化時に指定された Allocate ルーチンを呼び出すか 、ExAllocatePoolWithTag を呼び出してエントリ ポインターを返します。

呼び出し元は、呼び出し元によって決定されたデータを使用して、返されたエントリを設定できます。 呼び出し元は、 ExFreeToPagedLookasideList が使用されなくなったときに、各エントリを解放する必要があります。

ページングされたルックアサイド リスト内のエントリはページング可能なメモリから割り当てられるため、IRQL >= DISPATCH_LEVELでアクセスすることはできません。 ExAllocateFromNPagedLookasideList を使用して、ページングできないエントリを含むルックアサイド リストを作成できます。

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

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

要件

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

こちらもご覧ください

ExAllocateFromNPagedLookasideList

ExFreeToPagedLookasideList

ExInitializePagedLookasideList

PAGED_LOOKASIDE_LIST