PFNKSALLOCATOR コールバック関数 (ks.h)
ミニドライバーは、KsEnableEventWithAllocator、KsPropertyHandlerWithAllocator、KsMethodHandlerWithAllocator の呼び出しで、オプションで PFNKSALLOCATOR 型のコールバック関数をパラメーターとして指定できます。
構文
PFNKSALLOCATOR Pfnksallocator;
NTSTATUS Pfnksallocator(
[in] PIRP Irp,
[in] ULONG BufferSize,
[in] BOOLEAN InputOperation
)
{...}
パラメーター
[in] Irp
バッファー割り当て要求を行う IRP を指定します。
[in] BufferSize
必要なバッファーのサイズを指定します。 このサイズは、要求内のすべてのパラメーターを対象とします。
[in] InputOperation
これが入力操作の場合は TRUE に設定されます。つまり、正常に戻った場合、Irp-IoStatus.Information> フィールドには、元の入力バッファーにコピーバックするバイト数が含まれます。
戻り値
要求が処理された場合STATUS_SUCCESSを返します。 それ以外の場合は、適切なエラー コードを返します。
注釈
通常、プール メモリはバッファー割り当てに使用されます。 これにより、イベント、プロパティ、メソッドのクエリをハードウェアに直接渡すフィルターを使用して、このようなデータが標準の処理関数によって配置されるバッファーを提供できるようにすることで、追加のデータ コピーを回避できます。 そのため、フィルターには、バッファー割り当てが発生する可能性があるアダプターに既にマップされているメモリ ブロックが含まれている可能性があります。
このメモリは通常のプール割り当てメモリではないため、フィルターは Irp の完了時にバッファー クリーンアップを実行する必要があります。 つまり、同期ではないユーザー モードからの入力操作の場合、アロケーターは宛先バッファーに MDL を割り当て、プローブしてロックし、システム アドレスを取得する必要があります。 これは、戻りデータを元のバッファーにコピーできるようにするために行う必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | ks.h (Ks.h を含む) |