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 を割り当て、プローブしてロックし、システム アドレスを取得する必要があります。 これは、戻りデータを元のバッファーにコピーできるようにするために行う必要があります。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | ks.h (Ks.h を含む) |