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 结构的 Create 成员中指定此例程的地址。 在调用例程时,文件对象具有关联的上下文,并且已分配 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 中的 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