次の方法で共有


PFNKSALLOCATOR コールバック関数 (ks.h)

ミニドライバーは、KsEnableEventWithAllocator、KsPropertyHandlerWithAllocatorKsMethodHandlerWithAllocator の呼び出しで、オプションで 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 を含む)