ExAllocatePoolQuotaUninitialized ルーチンはプール メモリを割り当て、現在のプロセスに対してクォータを課金します。
このルーチンは、ExAllocatePoolWithQuotaTagのラッパーおよび置換オプションです。 機能に違いはありません。
構文
PVOID ExAllocatePoolQuotaUninitialized(
__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 (スペース) の範囲内の値である必要があります。 各割り当てコード パスでは、デバッガーと検証ツールがコード パスを識別するのに役立つ一意のプール タグを使用する必要があります。
戻り値
ExAllocatePoolQuotaUninitialized 、割り当てられたプールへのポインターを返します。
要求が満たされない場合、exAllocatePoolQuotaUninitialized POOL_QUOTA_FAIL_INSTEAD_OF_RAISEが指定されていない限り、例外が発生します。 パフォーマンス上の理由から、POOL_QUOTA_FAIL_INSTEAD_OF_RAISEの使用をお勧めします。
備考
このルーチンは、最初に I/O 要求を行ったプロセスのコンテキストで要求を満たすためにメモリを割り当てる最上位レベルのドライバーによって呼び出されます。 下位レベルのドライバーは、代わりに ExAllocatePoolUninitialized呼び出します。
ExAllocatePoolQuotaUninitialized 割り当て メモリは初期化されていません。 カーネル モード ドライバーは、ユーザー モード のソフトウェアに表示する場合は、このメモリを最初にゼロにする必要があります (潜在的に特権のあるコンテンツのリークを回避するため)
追加のガイダンスについては、exAllocatePoolWithQuotaTagの 解説 セクション参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 バージョン 2004 用 WDK が必要です。 Windows 7 以降のバージョンの Windows オペレーティング システムを対象としています。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL (「解説」セクションを参照) |
DDI コンプライアンス規則 を する | HwStorPortProhibitedDIs、SpNoWait、StorPortStartIo |
関連項目
ExAllocatePoolQuotaZeroの
ExAllocatePoolWithQuotaTagをする