ExAllocatePoolPriorityZero 関数 (wdm.h)
注意事項
Microsoft は ExAllocatePoolPriorityZero に関する問題を認識しており、Windows 10 バージョン 1909 で割り当てがゼロにならない可能性があります。 この問題は、2020 年 12 月 16 日に、Windows 10 バージョン 2004 の WDK と、Windows 10 バージョン 2004 の Enterprise WDK (EWDK) のセキュリティ更新で修正されました。 最新の WDK のダウンロードについては、「 Windows ドライバー キット (WDK) のダウンロード」を参照してください。
このルーチンは のラッパーであり、 ExAllocatePoolWithTagPriority に推奨される置換オプションです。
ExAllocatePoolPriorityZero は、指定した型のプール メモリを割り当てます。
これは ExAllocatePoolWithTagPriority と 同じですが、割り当てられたメモリは 0 で初期化されます。 これが望ましくない場合は、代わりに ExAllocatePoolPriorityUninitialized を使用します。
構文
PVOID ExAllocatePoolPriorityZero(
__drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
SIZE_T NumberOfBytes,
ULONG Tag,
EX_POOL_PRIORITY Priority
);
パラメーター
PoolType
割り当てるプール メモリの種類。 使用可能なプール メモリの種類の説明については、「 POOL_TYPE」を参照してください。
で定義 wdm.h
されているPOOL_RAISE_IF_ALLOCATION_FAILURE フラグを使用してビットごとの OR を実行することで、列挙値を変更できます。 このフラグを指定すると、要求を満たすことができない場合に例外が発生します。 このフラグはコストがかかるため、使用しないことをお勧めします。
同様に、この値を POOL_COLD_ALLOCATION フラグ (で定義) でビット単位で wdm.h
ORing することで、カーネルへのヒントとして PoolType 値を変更して、ページアウトされる可能性が高いページからメモリを割り当てることができます。 常駐プールのメモリ量をできるだけ減らすには、これらの割り当てを頻繁に参照しないでください。 POOL_COLD_ALLOCATION フラグは、唯一のアドバイザリです。
NumberOfBytes
割り当てるバイト数。
Tag
割り当てられたメモリに使用するプール タグ。 プール タグを、単一引用符で区切られた 1 ~ 4 文字の 0 以外の文字リテラルとして指定します (例: Tag1
)。 文字列は通常、逆の順序で指定されます (例: 1gaT
)。 タグ内の各 ASCII 文字は、0x7E (チルダ) に0x20 (スペース) の範囲内の値である必要があります。 各割り当てコード パスでは、デバッガーと検証者がコード パスを識別するのに役立つ一意のプール タグを使用する必要があります。
Priority
この要求の優先順位を指定する EX_POOL_PRIORITY 列挙値。
戻り値
ExAllocatePoolPriorityZero は、POOL_RAISE_IF_ALLOCATION_FAILUREが指定されていない限り、空きプール内に要求を満たすメモリが不足している場合に NULL を返します。 それ以外の場合、ルーチンは割り当てられたメモリへのポインターを返します。
注釈
バージョン 2004 より前のバージョンの Windows で実行するには、ドライバーで Windows 10 POOL_ZERO_DOWN_LEVEL_SUPPORTを定義し、この関数を呼び出す前に ExInitializeDriverRuntime を呼び出す必要があります。
追加のガイダンスについては、「 ExAllocatePoolWithTagPriority 」の「解説」セクションを参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 バージョン 2004 に WDK が必要です。 Windows 7 以降のバージョンの Windows オペレーティング システムを対象としています。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (「解説」セクションを参照) |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs、IrqlExAllocatePool、IrqlExFree2、SpNoWait、StorPortStartIo |