次の方法で共有


FsRtlAllocatePoolWithTag マクロ (ntifs.h)

FsRtlAllocatePoolWithTag ルーチンはプール メモリを割り当てます。

構文

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

パラメーター

[in] PoolType

割り当てるプールの種類。 次のいずれかの手順を実行します。

  • NonPagedPool の
  • PagedPool
  • NonPagedPoolCacheAligned の
  • PagedPoolCacheAligned

nonPagedPoolMustSucceed と nonPagedPoolCacheAlignedMustS プールの種類 は廃止され、使用されなくなりました。

[in] NumberOfBytes

割り当てるバイト数。 このパラメーターは必須であり、0 にすることはできません。

[in] Tag

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

戻り値

何一つ

備考

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

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

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

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

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

必要条件

要件 価値
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (「解説」セクションを参照)

関連項目

ExAllocatePoolWithTag の

ExFreePool を する