PFNKSFILTERIRP 回呼函式 (ks.h)
當篩選收到 IRP 時,會呼叫 AVStream minidriver 的 AVStrMiniFilterCreate 例程。
語法
PFNKSFILTERIRP Pfnksfilterirp;
NTSTATUS Pfnksfilterirp(
[in] PKSFILTER Filter,
[in] PIRP Irp
)
{...}
參數
[in] Filter
KSFILTER 的指標。
[in] Irp
篩選的 IRP 指標。
傳回值
如果例程成功,請傳回STATUS_SUCCESS或錯誤碼。
備註
IRP | Description |
---|---|
IRP_MJ_CREATE | 一般而言,此例程是由想要初始化與篩選相關聯之內容和資源的迷你驅動程式所使用。 minidriver 會在其KSFILTER_DISPATCH結構的 Create 成員中指定這個例程的位址。 在呼叫例程的點,檔案物件具有相關聯的內容,而且已配置 KS 對象標頭。 此例程是在 IRQL = PASSIVE_LEVEL,並保留裝置 mutex。 如果例程成功,則會保證建立作業成功。 傳回STATUS_SUCCESS或嘗試建立篩選時傳回的錯誤碼。 STATUS_PENDING也是合法的傳回碼。 如果迷你驅動程式傳回STATUS_PENDING,AVStream 將不會立即完成 IRP_MJ_CREATE 。 在傳回STATUS_PENDING之前,迷你驅動程序必須呼叫 IoMarkIrpPending。 當建立的處理完成時,迷你驅動程式必須設定 IRP 的狀態代碼,然後呼叫 KsCompletePendingRequest。 此例程是選擇性的。 |
IRP_MJ_CLOSE | minidriver 會在其KSFILTER_DISPATCH結構的 Close 成員中指定這個例程的位址。 在呼叫例程時,篩選上的任何已註冊事件都已釋放,但物件會保持不變。 此例程是在 IRQL = PASSIVE_LEVEL,並保留裝置 mutex。 如需 mutex 的詳細資訊,請參閱 AVStream 中的 Mutexes。 此例程是選擇性的。 傳回STATUS_SUCCESS或STATUS_PENDING。 如果迷你驅動程式傳回STATUS_PENDING,AVStream 將不會立即完成 IRP_MJ_CLOSE 。 不過,在傳回STATUS_PENDING之前,迷你驅動程式必須呼叫 IoMarkIrpPending。 關閉處理完成後,迷你驅動程序必須設定 IRP 的狀態代碼,然後呼叫 KsCompletePendingRequest。 |
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | ks.h (包含 Ks.h) |
IRQL | PASSIVE_LEVEL (请参阅一节) |