次の方法で共有


ExAllocateFromLookasideListEx 関数 (wdm.h)

ExAllocateFromLookasideListEx ルーチンは、指定したルックアサイド リストから最初のエントリを削除するか、リストが空の場合は、新しいエントリの記憶域を動的に割り当てます。

構文

PVOID ExAllocateFromLookasideListEx(
  [in, out] PLOOKASIDE_LIST_EX Lookaside
);

パラメーター

[in, out] Lookaside

ルックアサイド リストを記述する LOOKASIDE_LIST_EX 構造体へのポインター。 この構造体は、以前は exInitializeLookasideListEx ルーチン によって初期化されていました。

戻り値

ExAllocateFromLookasideListEx は、リストでエントリが使用可能な場合、または動的に割り当てることができる場合に、ルックアサイド リスト エントリへのポインターを返します。 それ以外の場合、このルーチンは null 返します。

備考

注意

Windows 11 バージョン 22H2 以降では、この関数はインラインからエクスポートに変更されました。 その結果、最新バージョンの Windows を対象とするドライバーをビルドすると、古い OS バージョンでの読み込みに失敗します。 Visual Studio でターゲット OS のバージョンを変更するには、[Configuration Properties->Driver Settings->General] を選択します。

このルーチンは、指定したルックアサイド リストから最初のエントリ (エントリが使用可能な場合) を削除し、このエントリへのポインターを返します。 リストが空の場合、ルーチンは新しいエントリにストレージを割り当て、このエントリへのポインターを返します。 この割り当てが失敗した場合、ルーチンは NULL 返します。

ルックアサイド リストが空の場合、ExAllocateFromLookasideListEx は、LookasideListAllocateEx ルーチンを呼び出して、新しいエントリにストレージを割り当てます (ドライバーがこのようなルーチンを提供している場合)。 それ以外の場合は、エントリの割り当てに既定の割り当てルーチンが使用されます。

呼び出し元は、エントリの使用が完了したら、exFreeToLookasideListEx ルーチン 呼び出すことによって、エントリを解放する必要があります。

現在の実装では、ルックアサイド リストは最後の先入れ先出し (LIFO) スタックとして動作します。 したがって、解放される (およびスタックにプッシュされる) 最後のエントリは、リストから割り当てられる (ポップされる) 次のエントリです。

ルックアサイド リストの詳細については、「ルックアサイド リストの使用 を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降のバージョンの Windows で使用できます。
ターゲット プラットフォーム デスクトップ
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

関連項目

ExFreeToLookasideListEx

ExInitializeLookasideListEx

LOOKASIDE_LIST_EX

LookasideListAllocateEx