次の方法で共有


KsPropertyHandlerWithAllocator 関数 (ks.h)

KsPropertyHandlerWithAllocator は、同じ制限 KsPropertyHandlerと同じ処理を実行しますが、省略可能なアロケーター コールバックを使用してパラメーターのバッファーを提供できます。 フィルターを使用する場合は、何らかの非伝統的な方法でバッファーを解放する必要がある場合があります。 カスタム アロケーターを使用する場合、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 マクロを使用して、このポインターにアクセスできます。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー ks.h (Ks.h を含む)

関連項目

KsFastPropertyHandler

KsPropertyHandler