共用方式為


KsEnableEventWithAllocator 函式 (ks.h)

KsEnableEventWithAllocator 函式會啟用透過 IOCTL_KS_ENABLE_EVENT 要求的事件,但也允許選擇性配置器回呼用來提供參數的緩衝區。 它會回應集合所定義的所有事件標識碼。 此函式只能在PASSIVE_LEVEL呼叫。

如果使用,篩選條件可能需要以某種非常值的方式釋放緩衝區。 請注意,使用自定義配置器時,不會設定IRP_BUFFERED_IO和IRP_DEALLOCATE_BUFFER旗標。

語法

KSDDKAPI NTSTATUS KsEnableEventWithAllocator(
  [in]           PIRP              Irp,
  [in]           ULONG             EventSetsCount,
  [in]           const KSEVENT_SET *EventSet,
  [in, out]      PLIST_ENTRY       EventsList,
  [in, optional] KSEVENTS_LOCKTYPE EventsFlags,
  [in, optional] PVOID             EventsLock,
  [in, optional] PFNKSALLOCATOR    Allocator,
  [in, optional] ULONG             EventItemSize
);

參數

[in] Irp

使用正在處理的啟用要求來指定 IRP。 與 IRP 相關聯的檔案物件會與 事件一起儲存,以供稍後在停用事件時進行比較。

[in] EventSetsCount

指出要傳遞的事件集結構數目。

[in] EventSet

指定事件集資訊的指標。

[in, out] EventsList

如果啟用事件的KSEVENT_SET。事件集的 AddHandler 為 NULL,它必須指向要加入事件之KSEVENT_ENTRY專案清單的前端。 此函式假設至少一個事件子集的單一清單。

[in, optional] EventsFlags

指定 KSEVENTS_LOCKTYPE 旗標,指定要用於存取事件清單的排除鎖定類型,如果有的話。 如果未設定旗標,則不會取得任何鎖定。 如果已經指定處理程式,則會忽略此參數。

[in, optional] EventsLock

如果KSEVENT_SET。包含所啟用事件之事件集的 AddHandler 為 NULL,然後用來同步處理清單的存取權。 如果 EventsFlags 中未設定旗標,此值可以是 NULL

[in, optional] Allocator

選擇性地指向將用來配置記憶體來儲存事件參數的配置函式。

[in, optional] EventItemSize

選擇性地包含每個事件清單中每個KSEVENT_ITEM結構的大小。 事件專案可以擴充以儲存私人資訊。 如果此參數為零,則會假設結構大小為一般。 如果大於或等於事件項目結構,則KSEVENT_ITEM_IRP_STORAGE宏可用來傳回事件專案的指標,以便擷取自定義數據。 在 64 位平臺上,此參數必須是 8 的倍數。

傳回值

KsEnableEvent 相同,如果成功,則會傳回STATUS_SUCCESS,或在失敗時啟用事件的特定錯誤。 函式一律會設定IO_STATUS_BLOCK。PIRP 的資訊欄位。IRP 內的IoStatus元素為零。 它不會設定IO_STATUS_BLOCK。狀態欄位,也不會完成 IRP。

備註

如果使用選擇性配置器回呼,篩選條件可能需要以某種非傳統方式釋放緩衝區。 請注意,使用自定義配置器時,不會設定IRP_BUFFERED_IO和IRP_DEALLOCATE_BUFFER旗標。

規格需求

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