次の方法で共有


ExAllocatePoolQuotaZero 関数 (wdm.h)

注意

Microsoft は、Windows 10 バージョン 1909 で割り当てがゼロにならない可能性がある ExAllocatePoolQuotaZero の問題を認識しています。この問題は、Windows 10 バージョン 2004 用 WDK と Windows 10 バージョン 2004 の Enterprise WDK (EWDK) のセキュリティ更新で 2020 年 12 月 16 日に修正されました。 最新の WDK のダウンロードについては、「Windows Driver Kit (WDK)をダウンロードする」を参照してください。

このルーチンは、ExAllocatePoolWithQuotaTag のラッパーであり、推奨される代替オプションです。

ExAllocatePoolQuotaZero は、指定した型のプール メモリを割り当て、割り当てられたブロックへのポインターを返します。 ExAllocatePoolWithQuotaTag と同じですが、割り当てられたメモリが 0 で初期化される点が異なります。 これが望ましくない場合は、代わりに ExAllocatePoolQuotaUninitialized 使用します。

構文

PVOID ExAllocatePoolQuotaZero(
  __drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
  SIZE_T                                         NumberOfBytes,
  ULONG                                          Tag
);

パラメーター

PoolType

割り当てるプール メモリの種類。 使用可能なプール メモリの種類の詳細については、POOL_TYPEを参照してください。

同様に、PoolType 値を変更するには、この値をPOOL_COLD_ALLOCATION フラグ (wdm.hでも定義) を使用してビットごとの ORing をカーネルにヒントとして付けて、ページアウトされる可能性が高いページからメモリを割り当てることができます。 常駐プール メモリの量をできるだけ減らすには、これらの割り当てを頻繁に参照しないでください。 POOL_COLD_ALLOCATION フラグは、唯一のアドバイザリです。

NumberOfBytes

割り当てるバイト数。

Tag

割り当てられたメモリに使用するプール タグ。 単一引用符で区切られた 1 ~ 4 文字の 0 以外の文字リテラルとしてプール タグを指定します (例: Tag1)。 通常、文字列は逆の順序で指定されます (たとえば、1gaT)。 タグ内の各 ASCII 文字は、0x7E (チルダ) 0x20 (スペース) の範囲内の値である必要があります。 各割り当てコード パスでは、デバッガーと検証ツールがコード パスを識別するのに役立つ一意のプール タグを使用する必要があります。

戻り値

ExAllocatePoolQuotaZero は、割り当てられたプールへのポインターを返します。

要求を満たすことができない場合は、POOL_QUOTA_FAIL_INSTEAD_OF_RAISEが指定されていない限り、ExAllocatePoolQuotaZero によって例外が発生します。 パフォーマンス上の理由から、POOL_QUOTA_FAIL_INSTEAD_OF_RAISEの使用をお勧めします。

備考

Windows 10 バージョン 2004 より前のバージョンの Windows で実行するには、ドライバーでPOOL_ZERO_DOWN_LEVEL_SUPPORTを定義し、この関数を呼び出す前 ExInitializeDriverRuntime を呼び出す必要があります。

このルーチンは、最初に I/O 要求を行ったプロセスのコンテキストで要求を満たすためにメモリを割り当てる最上位レベルのドライバーによって呼び出されます。 下位レベルのドライバーは、代わりに ExAllocatePoolZero 呼び出します。

追加のガイダンスについては、exAllocatePoolWithQuotaTag の「解説」セクション 参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 2004 用 WDK が必要です。 Windows 7 以降のバージョンの Windows オペレーティング システムを対象としています。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (「解説」セクションを参照)
DDI コンプライアンス規則 する HwStorPortProhibitedDIs、SpNoWait、StorPortStartIo

関連項目

ExAllocatePoolQuotaUninitialized