PFNKSFILTERIRP 回呼函式 (ks.h)

當篩選收到 IRP 時,會呼叫 AVStream minidriver 的 AVStrMiniFilterCreate 例程。

IRP_MJ_CREATE

IRP_MJ_CLOSE

語法

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 (请参阅一节)

另請參閱

IoMarkIrpPending

KSFILTER_DISPATCHKsCompletePendingRequest