portcls.h) (PCPROPERTY_ITEM 结构

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结构的数组。

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

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

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

要求

要求
Header portcls.h (包括 Portcls.h)

另请参阅

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest