次の方法で共有


KsPropertyHandlerWithAllocator 関数 (ks.h)

KsPropertyHandlerWithAllocatorKsPropertyHandler と同じ処理を同じ制限で実行しますが、省略可能なアロケーター コールバックを使用してパラメーターのバッファーを提供できます。 フィルターを使用する場合、何らかの非伝統的な方法でバッファーを解放する必要がある場合があります。 カスタム アロケーターを使用する場合、IRP_BUFFERED_IOフラグとIRP_DEALLOCATE_BUFFER フラグは設定されません。

構文

KSDDKAPI NTSTATUS KsPropertyHandlerWithAllocator(
  [in]           PIRP                 Irp,
  [in]           ULONG                PropertySetsCount,
  [in]           const KSPROPERTY_SET *PropertySet,
  [in, optional] PFNKSALLOCATOR       Allocator,
  [in, optional] ULONG                PropertyItemSize
);

パラメーター

[in] Irp

処理されるプロパティ要求を含む IRP を指定します。

[in] PropertySetsCount

渡されるプロパティ セットの数を指定します。

[in] PropertySet

プロパティ セット情報の配列へのポインターを指定します。

[in, optional] Allocator

必要に応じて、プロパティ パラメーターを格納するためにメモリを割り当てるために使用される割り当て関数を指します。

[in, optional] PropertyItemSize

必要に応じて、プロパティ内の各KSPROPERTY_ITEM構造体のサイズを格納します。 プロパティ項目は、個人情報を格納するために拡張できます。 このパラメーターが 0 の場合、構造体のサイズは通常と見なされます。 プロパティ項目構造以上の場合は、カスタム データを取得できるように、KSPROPERTY_ITEM_IRP_STORAGE マクロを使用してプロパティ項目へのポインターを返すことができます。 64 ビット プラットフォームでは、このパラメーターは 8 の倍数である必要があります。

戻り値

KsPropertyHandler 関数は、成功した場合はSTATUS_SUCCESSを返し、失敗した場合は処理されるプロパティに固有のエラーを返します。 この関数は、内部エラーが原因で Irp-IoStatus.Information> メンバーを 0 に設定するか、プロパティ ハンドラーを使用してメンバーを設定します。 関数は、lrp-IoStatus.Status> メンバーを設定せず、IRP を完了しません。

64 ビット プラットフォームでは、 PropertyItemSize パラメーターが 8 の倍数でない場合、STATUS_INVALID_PARAMETERが返され、呼び出しは失敗します。

注釈

KsPropertyHandlerWithAllocator は、IRP の Irp-Tail.Overlay.DriverContext> パラメーター内の関連するKSPROPERTY_ITEM構造体へのポインターを配置します。 ミニドライバーは、 ks.h で定義されているKSPROPERTY_ITEM_IRP_STORAGE マクロを使用して、このポインターにアクセスできます。

要件

要件
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)

こちらもご覧ください

KsFastPropertyHandler

KsPropertyHandler