PFNKSFILTERIRP 回调函数 (ks.h)

当筛选器接收 IRP 时,将调用 AVStream 微型驱动程序的 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 描述
IRP_MJ_CREATE 通常,此例程由希望初始化与筛选器关联的上下文和资源的微型驱动程序使用。 微型驱动程序在 创建KSFILTER_DISPATCH 结构的成员中指定此例程的地址。 在调用例程时,文件对象具有关联的上下文,并且已分配 KS 对象标头。 此例程在 IRQL = PASSIVE_LEVEL与设备互斥锁一起调用。 如果例程成功,则保证创建作成功。 返回STATUS_SUCCESS或从尝试创建筛选器返回的错误代码。 STATUS_PENDING也是法律返回代码。 如果微型驱动程序返回STATUS_PENDING,AVStream 将不会立即完成 IRP_MJ_CREATE。 返回STATUS_PENDING之前,微型驱动程序必须调用 IoMarkIrpPending。 创建处理完成后,微型驱动程序必须设置 IRP 的状态代码,然后调用 KsCompletePendingRequest。 此例程是可选的。
IRP_MJ_CLOSE 微型驱动程序在其 KSFILTER_DISPATCH 结构的 Close 成员中指定此例程的地址。 在调用例程时,筛选器上的任何已注册事件都已释放,但对象保持不变。 此例程在 IRQL = PASSIVE_LEVEL与设备互斥锁一起调用。 有关互斥体的详细信息,请参阅 AVStream 中的互斥体。 此例程是可选的。 返回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