次の方法で共有


FsRtlAllocatePoolWithQuotaTag マクロ (ntifs.h)

FsRtlAllocatePoolWithQuotaTag ルーチンはプール メモリを割り当て、現在のプロセスに対してクォータを充電します。

構文

void FsRtlAllocatePoolWithQuotaTag(
  [in]  PoolType,
  [in]  NumberOfBytes,
  [in]  Tag
);

パラメーター

[in] PoolType

割り当てるプールの種類。 次のいずれか:

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • PagedPoolCacheAligned

NonPagedPoolMustSucceed および NonPagedPoolCacheAlignedMustS プールの種類は古く、使用しないでください。

[in] NumberOfBytes

割り当てるバイト数。

[in] Tag

割り当てられたメモリのプール タグを指定します。 ドライバーは通常、プール タグを 1 ~ 4 個の 7 ビット ASCII 文字の文字列として指定し、単一引用符 ("abcd" など) で区切ります。 このパラメーターは必須であり、0 にすることはできません。

戻り値

なし

解説

プール割り当てエラーが発生した場合、 FsRtlAllocatePoolWithQuotaTag はSTATUS_INSUFFICIENT_RESOURCES例外を発生させます。 このプール割り当てエラーが発生したかどうかを制御するには、ドライバーは FsRtlAllocatePoolWithQuotaTag の呼び出しを try-except ステートメントまたは try-finally ステートメントでラップする必要があります。

システムは、 Tag パラメーターで指定されたプール タグを割り当てられたバッファーに関連付けます。 Windows デバッガー (WinDbg) などのプログラミング ツールでは、割り当てられた各バッファーに関連付けられているプール タグを表示できます。 通常、プール タグの値は逆の順序で表示されます。 たとえば、呼び出し元が Tag パラメーターの値として 'Fred' を渡した場合、プールがダンプされた場合、またはデバッガーでプールの使用状況を追跡するときに、この値は "derF" として表示されます。

メモリ管理の詳細については、「メモリ 管理」を参照してください。

FsRtlAllocatePoolWithQuotaTag が割り当てるメモリは初期化されていません。 カーネル モード ドライバーは、このメモリをユーザー モード ソフトウェアに表示する場合は、まずこのメモリをゼロにする必要があります (特権のある可能性のあるコンテンツがリークされないようにするため)。

FsRtlAllocatePoolWithQuotaTag の呼び出し元は、IRQL <= DISPATCH_LEVELで実行されている必要があります。 DISPATCH_LEVELの呼び出し元は 、NonPaged****XxxPoolType を指定する必要があります。 それ以外の場合、呼び出し元は IRQL < DISPATCH_LEVELで実行されている必要があります。

要件

要件
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (「解説」セクションを参照)

こちらもご覧ください

ExAllocatePoolWithQuotaTag

ExFreePool

FsRtlAllocatePoolWithQuota