KsFilterGenerateEvents 函式 (ks.h)
KsFilterGenerateEvents 函式會產生出現在篩選事件清單中的指定類型事件。
語法
void KsFilterGenerateEvents(
[in] PKSFILTER Filter,
[in, optional] const GUID *EventSet,
[in] ULONG EventId,
[in] ULONG DataSize,
[in] PVOID Data,
[in, optional] PFNKSGENERATEEVENTCALLBACK CallBack,
[in, optional] PVOID CallBackContext
);
參數
[in] Filter
要在其中產生事件的 KSFILTER 結構的指標。
[in, optional] EventSet
事件集 GUID 的指標,用於判斷要產生的事件。 如果此參數為 NULL,則不會考慮事件集 GUID 來判斷比對事件。
[in] EventId
要比對的事件標識碼,用來判斷要產生的事件。
[in] DataSize
數據的大小,以位元組為單位。
[in] Data
數據緩衝區的指標。 指定是否產生數據事件。
[in, optional] CallBack
呼叫端指定之函式的指標,用來判斷是否應該產生指定的事件。 如果這是 NULL,則不會執行回呼驗證,以判斷是否應該 (只產生事件 *EventSet *,而且 會使用 EventId) 。 如需詳細資訊,請參閱下面的<備註>一節。
[in, optional] CallBackContext
傳遞至回呼函式 CallBack 之呼叫端指定內容的選擇性指標。 如需詳細資訊,請參閱下面的<備註>一節。
傳回值
無
備註
呼叫此函式時,迷你驅動程式必須將 Data 和 CallBackContext 放在鎖定、不可分頁的數據區段中。 此外,請注意, CallBack 是在DISPATCH_LEVEL進行。 回呼函式必須位於鎖定的區段中,而且必須準備好在 IRQL = DISPATCH_LEVEL執行。 請注意, DX8 中還有其他問題: EventSet 必須位於鎖定的數據區段中。
這是 KsGenerateEvents 的內嵌函數調用,可執行必要的類型傳播。 Minidrivers 通常應該呼叫此版本,而不是直接呼叫 KsGenerateEvents。
如果下列條件保留,就會產生事件:
事件會出現在 Filter 的事件清單中, 而 EventId 符合事件的標識碼
EventSet 符合事件的設定 GUID 或 為 NULL
CallBack 為 NULL 或授權比對
CallBack 是呼叫端指定的回呼,用於其他比對判斷。 其原型如下:
BOOLEAN CallBack (IN PVOID Context, IN PKSEVENT_ENTRY EventEntry);
AVStream 會在此回呼的 Context 參數中傳遞 KsFilterGenerateEvents 例程的參數 CallBackContext 的內容。 EventEntry 是指定產生之事件的 KSEVENT_ENTRY 結構的指標。 如果應該產生此事件,回呼函式應該會傳回 TRUE 。
如需詳細資訊,請參閱AVStream和 KS 事件中的事件處理。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Microsoft Windows XP 和更新版本的作業系統和 DirectX 8.0 和更新版本的 DirectX。 |
目標平台 | 桌面 |
標頭 | ks.h (包含 Ks.h) |
程式庫 | Ks.lib |
IRQL | <=DISPATCH_LEVEL (請參閱一節。) |