次の方法で共有


プールの割り当てとフリー ルーチン

RDBSS は、プールの割り当てに使用するルーチンが多数提供されています。 通常、これらのルーチンは直接呼び出すのではなく、マクロを使用して呼び出されます。 マクロは、製品版ビルドとチェック済みビルドの違いを自動的に処理します。

チェック済みビルドでは、これらのルーチンは、通常のカーネル割り当てとフリー ルーチンの周囲にラッパーを追加するように設計されました。 プールの割り当ておよびフリー ルーチン用のこれらのラッパーは、追加のデバッグ情報を提供し、カーネル プールの割り当てとフリー ルーチンを呼び出す前に、さまざまな種類のチェックと保護を実行するルーチンのセットを呼び出します。 ただし、これらの機能は現在、これらの割り当てルーチンとフリー ルーチンでは実装されていませんが、今後のリリースで追加される可能性があります。

フリー ビルドでは、これらのルーチンはカーネル割り当てとフリー ルーチン ExAllocatePoolWithTag および ExFreePool への直接呼び出しになります。

次の表に、RDBSS プールの割り当てとフリー ルーチンの一覧を示します。

ルーチンによって返される値 説明

_RxAllocatePoolWithTag

このルーチンは、メモリの問題をキャッチするのに役立つブロックの先頭に 4 バイトのタグを持つプールからメモリを割り当てます。

このルーチンを直接使う代わりに、RxAllocatePoolWithTag マクロを呼び出すことをお勧めします。

_RxCheckMemoryBlock

このルーチンは、特別な RX_POOL_HEADER ヘッダー署名のメモリ ブロックをチェックします。 ルーチンを使用するには、ネットワーク ミニリダイレクター ドライバーでこの特別な署名ブロックを割り当てられるメモリに追加する必要があることに注意してください。

この特別なヘッダー ブロックが実装されていないため、このルーチンは使用しないでください。

_RxFreePool

このルーチンは、メモリ プールを解放します。

このルーチンを直接使う代わりに、RxFreePool マクロを呼び出すことをお勧めします。

ntrxdef.h ヘッダー ファイルで定義されているマクロの数は、これらのルーチンを呼び出します。 前の表に示したルーチンを直接呼び出す代わりに、通常、次のマクロが使用されます。

マクロ 説明

RxAllocatePoolWithTag (サイズタグ)

チェック済みビルドでは、このマクロは、メモリが捨てられるインスタンスをキャッチするのに役立つブロックの先頭に 4 バイトのタグを持つプールからメモリを割り当てます。

製品版ビルドでは、このマクロは ExAllocatePoolWithTag への直接呼び出しになります。

RxCheckMemoryBlock (ptr)

チェック済みビルドでは、このマクロは特殊な RX_POOL_HEADER ヘッダー署名のメモリ ブロックをチェックします。

製品版ビルドでは、このマクロは何も行いません。

RxFreePool (ptr)

チェック済みビルドでは、このマクロはメモリ プールを解放します。

製品版ビルドでは、このマクロは ExFreePool への直接呼び出しになります。