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

傳回值

如果成功, KsPropertyHandler 函式會傳回STATUS_SUCCESS,或失敗時所處理之屬性的特定錯誤。 函式會透過將 Irp-IoStatus.Information> 成員設定為零,因為發生內部錯誤,或透過屬性處理程式加以設定。 函式不會設定 lrp-IoStatus.Status> 成員,也不會完成 IRP。

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

備註

KsPropertyHandlerWithAllocator 會將相關KSPROPERTY_ITEM結構的指標放在 IRP-Tail.Overlay.DriverContext> 參數的 IRP 中。 minidriver 可以使用 ks.h 中定義的 KSPROPERTY_ITEM_IRP_STORAGE 宏來存取此指標。

規格需求

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

另請參閱

KsFastPropertyHandler

KsPropertyHandler