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

指定屬性識別碼。 這個成員會識別屬性集內的屬性專案。 如果屬性集包含 N 個專案,則有效屬性識別碼是範圍 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以外的任何狀態代碼,則呼叫端會釋放 結構。 在此情況下,迷你埠驅動程式不應該嘗試在 Handler 例程傳回之後存取結構。
  2. 處理程式例程也可以傳回STATUS_PENDING,在此情況下,迷你埠驅動程式會強制呼叫 PcCompletePendingPropertyRequest,稍後才能完成擱置的屬性要求。 PcCompletePendingPropertyRequest 函式會釋放 結構。 呼叫 PcCompletePendingPropertyRequest 之後,迷你埠驅動程式不應該嘗試存取結構。
如果迷你埠驅動程式在釋放結構之後嘗試存取結構,此動作可能會導致錯誤檢查或損毀另一個驅動程序的記憶體。

如需屬性集串行化和原始串行化的詳細資訊,請參閱 KS 屬性

規格需求

需求
標頭 portcls.h (包含 Portcls.h)

另請參閱

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest