次の方法で共有


KsMethodHandlerWithAllocator 関数 (ks.h)

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

構文

KSDDKAPI NTSTATUS KsMethodHandlerWithAllocator(
  [in]           PIRP               Irp,
  [in]           ULONG              MethodSetsCount,
  [in]           const KSMETHOD_SET *MethodSet,
  [in, optional] PFNKSALLOCATOR     Allocator,
  [in, optional] ULONG              MethodItemSize
);

パラメーター

[in] Irp

処理されるメソッド要求を含む IRP を指定します。

[in] MethodSetsCount

渡されるメソッド セット構造体の数を示します。

[in] MethodSet

メソッド セット情報の一覧へのポインターを指定します。

[in, optional] Allocator

必要に応じて、メソッド パラメーターを格納するメモリの割り当てに使用される割り当て関数を指します。

[in, optional] MethodItemSize

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

戻り値

KsMethodHandler 関数は、成功した場合はSTATUS_SUCCESSを返し、失敗した場合は処理されるメソッドに固有のエラーを返します。 関数は常にIO_STATUS_BLOCKを設定します。PIRP の情報フィールド。内部エラーが原因で IRP 内の IoStatus 要素を 0 にするか、メソッド ハンドラーによって要素が設定されます。 関数はIO_STATUS_BLOCKを設定しません。状態フィールドまたは IRP を完了します。

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

要件

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