PCPROPERTY_ITEM结构(portcls.h)

PCPROPERTY_ITEM 结构描述特定筛选器、引脚或节点支持的属性。

语法

typedef struct {
  const GUID            *Set;
  ULONG                 Id;
  ULONG                 Flags;
  PCPFNPROPERTY_HANDLER Handler;
} PCPROPERTY_ITEM, *PPCPROPERTY_ITEM;

成员

Set

指定属性集。 此成员是指向唯一标识属性集的 GUID 的指针。 请参阅 音频驱动程序属性集中的属性集 GUID 列表。

Id

指定属性 ID。 此成员标识属性集中的属性项。 如果属性集包含 N 项,则有效属性 ID 是范围 0 到 N-1 中的整数。

Flags

指定驱动程序支持的属性请求的类型。 将此成员设置为下表中显示的部分或全部标志位的按位 OR。

标记位 属性请求的类型
PCPROPERTY_ITEM_FLAG_GET 请求获取当前属性数据设置。
PCPROPERTY_ITEM_FLAG_SET 请求设置当前属性数据设置。
PCPROPERTY_ITEM_FLAG_DEFAULTVALUES 请求驱动程序对属性数据的默认值。
PCPROPERTY_ITEM_FLAG_BASICSUPPORT 请求基本支持,该请求指定驱动程序处理此属性的请求类型,并指定属性数据的有效数据类型和有效范围。
PCPROPERTY_ITEM_FLAG_SERIALIZESIZE 当此属性作为KSPROPERTY_TYPE_SERIALIZESET请求的一部分进行序列化时,请求此属性的属性数据的大小。
PCPROPERTY_ITEM_FLAG_SERIALIZERAW 请求以依赖驱动程序的方式序列化此属性。 此作是PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW的反函数。
PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW 请求以依赖于驱动程序的方式取消序列化此属性。 此作是PCPROPERTY_ITEM_FLAG_SERIALIZERAW的反函数。
PCPROPERTY_ITEM_FLAG_SERIALIZE PCPROPERTY_ITEM_FLAG_SERIALIZERAW |PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW |PCPROPERTY_ITEM_FLAG_SERIALIZESIZE

Handler

指向属性处理程序例程的指针。 此成员是PCPFNPROPERTY_HANDLER类型的函数指针,定义如下:

  typedef NTSTATUS (*PCPFNPROPERTY_HANDLER)
  (
      IN PPCPROPERTY_REQUEST  PropertyRequest
  );

请参阅以下“备注”部分。

言论

PCPROPERTY_ITEM 结构指定自动化表中的特定属性项。 PCAUTOMATION_TABLE 结构指向 PCPROPERTY_ITEM 结构的数组。

调用 处理程序 例程时,调用方传入单个调用参数,该参数是指向 PCPROPERTY_REQUEST 结构的指针。 此结构由调用方分配,调用方在以下任一条件下释放它:

  1. 如果 处理程序 例程返回除STATUS_PENDING以外的任何状态代码,则调用方释放结构。 在这种情况下,微型端口驱动程序不应在 处理程序 例程返回后尝试访问结构。
  2. 处理程序 例程也可以返回STATUS_PENDING,在这种情况下,微型端口驱动程序必须稍后调用 PcCompletePendingPropertyRequest 以完成挂起的属性请求。 PcCompletePendingPropertyRequest 函数释放结构。 调用 PcCompletePendingPropertyRequest后,微型端口驱动程序不应尝试访问结构。
如果微型端口驱动程序在释放结构后尝试访问该结构,则此作可能会导致 bug 检查或损坏其他驱动程序的内存。

有关属性集的序列化和原始序列化的详细信息,请参阅 KS 属性

要求

要求 价值
标头 portcls.h (包括 Portcls.h)

另请参阅

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest