共用方式為


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結構的大小。 方法專案可以擴充以儲存私人資訊。 如果此參數為零,則會假設結構大小為一般。 如果大於或等於方法項目結構,則KSMETHOD_ITEM_IRP_STORAGE宏可用來傳回方法專案的指標,以便擷取自定義數據。 在 64 位平臺上,此參數必須是 8 的倍數。

傳回值

如果成功, KsMethodHandler 函式會傳回STATUS_SUCCESS,或失敗時所處理之方法特定的錯誤。 函式一律會設定IO_STATUS_BLOCK。PIRP 的資訊欄位。IRP 內的 IoStatus 元素因為內部錯誤而設為零,或專案是由方法處理程式所設定。 函式不會設定IO_STATUS_BLOCK。狀態欄位或完成 IRP。

在 64 位平臺上,如果 PropertyItemSize 參數不是 8 的倍數,則會傳回STATUS_INVALID_PARAMETER,而呼叫會失敗。

規格需求

需求
目標平台 Universal
標頭 ks.h (包含 Ks.h)
程式庫 Ks.lib