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旗標。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ks.h (包括 Ks.h) |
連結庫 | Ks.lib |