PFNKSPINSETDATAFORMAT 回调函数 (ks.h)

AVStream 微型驱动程序的 AVStrMiniPinSetDataFormat 例程在引脚创建时调用,以验证以前商定的数据格式对于此 KSPIN 结构是可接受的,是否与此 KSDATARANGE 结构匹配。 由于某些类型的动态格式更改,例如接受 KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT 属性请求,也会调用此例程。

语法

PFNKSPINSETDATAFORMAT Pfnkspinsetdataformat;

NTSTATUS Pfnkspinsetdataformat(
  [in]           PKSPIN Pin,
  [in, optional] PKSDATAFORMAT OldFormat,
  [in, optional] PKSMULTIPLE_ITEM OldAttributeList,
  [in]           const KSDATARANGE *DataRange,
  [in, optional] const KSATTRIBUTE_LIST *AttributeRange
)
{...}

参数

[in] Pin

指向数据格式正在更改的 KSPIN 结构的指针。

[in, optional] OldFormat

可选。 指向 KSDATAFORMAT 结构的指针。 微型驱动程序可以使用此字段来确定引脚在此调用之前使用的数据格式。 如果 为 NULL,则表示尚未为引脚设置数据格式,并且尚未进行 Pin 的 创建调度。 此处的 NULL 值表示在初始化时调用此例程进行格式验证。

[in, optional] OldAttributeList

可选。 指向 KSMULTIPLE_ITEM 结构的指针,该结构存储以前格式的属性。

[in] DataRange

指向 KSDATARANGE 结构的指针。 新格式的数据范围。

[in, optional] AttributeRange

可选。 新格式的属性范围。

返回值

如果 PinConnectionFormat 成员与传递到此例程的范围匹配,则返回STATUS_SUCCESS。 如果 ConnectionFormat 与传递的范围不匹配,并且微型驱动程序想要继续尝试查找与另一个范围的匹配项,则返回STATUS_NO_MATCH。 如果 ConnectionFormat 与传递的范围不匹配,并且微型驱动程序不想继续尝试查找另一个范围的匹配项,则返回所选错误代码。 不要返回STATUS_PENDING。

注解

在环 3 图中,内核流式处理代理模块 (KsProxy) 基于商定的连接格式或动态格式更改设置数据格式。 KsProxy 发出 KSPROPERTY_CONNECTION_DATAFORMAT 请求,经过一些初始验证后,该请求将转换为对微型驱动程序的此调度调用。 请参阅 内核流式处理代理。 有关详细信息,请参阅 AVStream 中的 KS 数据格式和数据范围 和数据 范围交集

微型驱动程序在其KSPIN_DISPATCH结构的 SetDataFormat 成员中指定 AVStrMiniPinSetDataFormat 的地址。

可以在引脚收到 IRP_MJ_CREATE之前调用此例程,微型驱动程序应准备好处理这种情况。

OldFormatOldAttributeListAttributeRange 都是可选参数,可以为 NULL

此例程是可选的。

要求

要求
最低受支持的客户端 适用于 Microsoft Windows XP 及更高版本的操作系统以及 DirectX 8.0 及更高版本的 DirectX。
目标平台 桌面
标头 ks.h (包括 Ks.h)
IRQL PASSIVE_LEVEL

另请参阅

IRP_MJ_CREATE

KSDATAFORMAT

KSDATARANGE

KSMULTIPLE_ITEM

KSPIN

KSPIN_DISPATCH