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 |