閱讀英文

共用方式為


PCPROPERTY_ITEM結構 (portcls.h)

PCPROPERTY_ITEM 結構描述特定篩選、釘選或節點所支持的屬性。

語法

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

成員

Set

指定屬性集。 這個成員是可唯一識別屬性集之 GUID 的指標。 請參閱 Audio Drivers 屬性集中的屬性集 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. 如果 處理程式 例程傳回STATUS_PENDING以外的任何狀態代碼,呼叫端就會釋放 結構。 在此情況下,迷你埠驅動程序不應該嘗試在傳回 Handler 例程之後存取 結構。
  2. Handler 例程也可以傳回STATUS_PENDING,在此情況下,迷你埠驅動程序必須稍後呼叫 PcCompletePendingPropertyRequest 來完成擱置的屬性要求。 PcCompletePendingPropertyRequest 函式會釋放結構。 呼叫 PcCompletePendingPropertyRequest之後,迷你埠驅動程式不應該嘗試存取結構。
如果迷你埠驅動程式在釋放結構后嘗試存取結構,此動作可能會導致錯誤檢查或損毀另一個驅動程序的記憶體。

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

要求

要求 價值
標頭 portcls.h (包括 Portcls.h)

另請參閱

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest