KSPROPERTY_ITEM结构 (ks.h)

驱动程序使用KSPROPERTY_ITEM结构来描述它们如何支持属性集中的属性。

语法

typedef struct {
  ULONG                   PropertyId;
  union {
    PFNKSHANDLER GetPropertyHandler;
    BOOLEAN      GetSupported;
  };
  ULONG                   MinProperty;
  ULONG                   MinData;
  union {
    PFNKSHANDLER SetPropertyHandler;
    BOOLEAN      SetSupported;
  };
  const KSPROPERTY_VALUES *Values;
  ULONG                   RelationsCount;
  const KSPROPERTY        *Relations;
  PFNKSHANDLER            SupportHandler;
  ULONG                   SerializedSize;
} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;

成员

PropertyId

指定所描述的属性的 ID。

GetPropertyHandler

指向微型驱动程序提供的 KStrGetPropertyHandler的指针。 如果 NULL,则无法读取该属性。 此成员仅由使用 AVStream 或 Stream 类接口的驱动程序使用。

GetSupported

如果此属性支持获取请求,则设置为 TRUE,否则 FALSE。 (类驱动程序通过SRB_GET_DEVICE_PROPERTY或SRB_GET_STREAM_PROPERTY请求完成请求。此成员仅由在流类下运行的微型驱动程序使用。

MinProperty

指定要保存属性标识符的最小缓冲区长度。 这必须至少 大小KSPROPERTY)。

MinData

指定要保存从此属性读取或写入到此属性的数据的最小缓冲区长度。

SetPropertyHandler

指向微型驱动程序提供的 KStrSetPropertyHandler的指针。 如果 NULL,则无法设置该属性。 此成员仅由使用 AVStream 或 Stream 类接口的驱动程序使用。

SetSupported

如果此属性支持设置请求,则设置为 TRUE,否则 FALSE。 (类驱动程序通过SRB_SET_DEVICE_PROPERTY或SRB_SET_STREAM_PROPERTY请求完成请求。

Values

指向 KSPROPERTY_VALUES类型的结构的指针。 指定属性的可接受和/或默认值。 这些值与驱动程序报告的值相同,以响应设置了KSPROPERTY_TYPE_BASICSUPPORT和KSPROPERTY_TYPE_DEFAULTVALUES标志的IOCTL_KS_PROPERTY请求。

RelationsCount

指定 关系 成员指向的数组中的条目数。

Relations

指向表示与此结构相关的属性的 KSPROPERTY 结构数组。 如果更改一个属性可能会影响另一个属性的值,则两个属性被视为相关。 未使用每个条目的 标志 成员。

SupportHandler

仅当为原始序列化或原始非序列化实现自己的格式时,才提供此成员。 AVStream 会自动处理基本支持查询、范围查询和关系查询,AVStream 从此KSPROPERTY_ITEM结构的其他成员返回相关值。

SerializedSize

指定在KSPROPERTY_TYPE_SERIALIZESET请求中序列化时属性的大小。 如果属性无法序列化,则此属性应为零。 有关详细信息,请参阅 KSPROPERTY

言论

流类微型驱动程序使用KSPROPERTY_ITEM来描述客户端如何在集中的每个属性上满足属性请求。 属性集的处理在 KSPROPERTY_SET 结构中指定,其中包含指向KSPROPERTY_ITEM结构的数组的指针。

流类驱动程序代表微型驱动程序处理属性请求。 当流类驱动程序需要微型驱动程序的详细信息时,它会将SRB_XXX请求传递给微型驱动程序 StrMiniReceiveXXXRequest 例程之一。 流类驱动程序处理下表中列出的不同请求类型。

属性请求标志值 响应
KSPROPERTY_TYPE_GET 如果 GetSupportedTRUE,流类驱动程序会将 SRB_GET_DEVICE_PROPERTYSRB_GET_STREAM_PROPERTY 请求提交到相应的 minidriver StrMiniReceiveXXXRequest 例程。
KSPROPERTY_TYPE_SET 如果 SetSupported为 TRUE,则流类驱动程序会将 SRB_SET_DEVICE_PROPERTYSRB_SET_STREAM_PROPERTY 请求提交到相应的 minidriver StrMiniReceiveXXXRequest 例程。
KSPROPERTY_TYPE_BASICSUPPORT 流类驱动程序使用KSPROPERTY_ITEM获取满足此请求所需的信息。 例如,若要指定属性数据的数据类型和允许的范围,它们各自使用 此结构的成员。
KSPROPERTY_TYPE_SETSUPPORT 仅当驱动程序在其 KSPROPERTY_SET 结构中为属性集提供条目时,流类驱动程序才会将属性请求 IRP 作为STATUS_SUCCESS完成。
KSPROPERTY_TYPE_DEFAULTVALUES 流类驱动程序使用此结构的 成员来确定属性数据的默认值。
KSPROPERTY_TYPE_RELATIONS 流类驱动程序使用 Relations 成员来确定与此属性相关的属性。

如果客户端指定KSPROPERTY_TYPE_DEFAULTVALUES,驱动程序将使用数据缓冲区返回其值类型的说明,包括可能允许的范围和默认值。 此标志与KSPROPERTY_TYPE_BASICSUPPORT类似,只是返回的任何值都是在结构 KSPROPERTY_MEMBERSHEADER标志 成员中标有KSPROPERTY_MEMBER_FLAG_DEFAULT的值。

有关详细信息,请参阅 KS 属性

要求

要求 价值
标头 ks.h (包括 Ks.h)

另请参阅

KSPROPERTY

KSPROPERTY_SET

KSPROPERTY_VALUES

SRB_GET_DEVICE_PROPERTY

SRB_GET_STREAM_PROPERTY

SRB_SET_DEVICE_PROPERTY

SRB_SET_STREAM_PROPERTY