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 結構的指標。 此結構是由呼叫端所配置,而呼叫端會在下列任一條件下釋出它:
- 如果 Handler 例程傳回STATUS_PENDING以外的任何狀態代碼,則呼叫端會釋放 結構。 在此情況下,迷你埠驅動程式不應該嘗試在 Handler 例程傳回之後存取結構。
- 處理程式例程也可以傳回STATUS_PENDING,在此情況下,迷你埠驅動程式會強制呼叫 PcCompletePendingPropertyRequest,稍後才能完成擱置的屬性要求。 PcCompletePendingPropertyRequest 函式會釋放 結構。 呼叫 PcCompletePendingPropertyRequest 之後,迷你埠驅動程式不應該嘗試存取結構。
如需屬性集串行化和原始串行化的詳細資訊,請參閱 KS 屬性。
規格需求
需求 | 值 |
---|---|
標頭 | portcls.h (包含 Portcls.h) |