管理屬性

每個屬性都包含 屬性識別碼 (在其屬性集) 內是唯一的屬性識別碼、 (VT 或 VarType) 標記 ,代表值的型別,以及 本身。 Variant 類型標籤描述值中的資料表示。 此外,屬性也可以指派可用來識別屬性的 字串名稱 ,而不是使用必要的數值屬性識別碼 (識別碼) 。 若要建立和管理屬性,COM 會定義 IPropertyStorage 介面。

IPropertyStorage介面包含讀取和寫入屬性或屬性名稱陣列的方法。 介面包含與相同名稱的 IStorage方法類似的CommitRevert方法。 有公用程式方法可讓您設定屬性集 (CLSID 的類別識別碼) 、設定與集合相關聯的時間,以及取得屬性集的相關統計資料。 最後, 列舉 方法會建立列舉值,並傳回其 IEnumSTATPROPSTG 介面的指標。 您可以呼叫這個介面的方法,以列舉物件上的 STATPROPSTG 結構,這會提供目前屬性集中所有屬性的相關資訊。

以下是如何表示屬性的範例。 如果屬性集中的特定屬性保存動物的科學名稱,該名稱可以儲存為零終止字串。 與名稱一起儲存是類型指標,表示此值為以零結尾的字串。 這些屬性可能有下列特性:

屬性識別碼 字串識別碼 類型指標 表示的值
02 PID_ANIMALNAME VT_LPWSTR 以零結尾的 Unicode 字串
03 PID_LEGCOUNT VT_I2 WORD

 

任何可辨識屬性集格式的應用程式,透過其格式識別碼 (FMTID) 來識別它,都可以查看具有識別碼PID_ANIMALNAME的屬性、判斷它是零終止的字串,以及讀取和寫入值。 雖然應用程式可以呼叫 IPropertyStorage::ReadMultiple 來讀取任何或所有屬性集, (先取得指標) ,應用程式必須知道如何解譯屬性集。

屬性值會透過屬性介面傳遞為 PROPVARIANT類型的實例。

請務必區分這些預存 (持續性) 屬性,以及執行時間屬性。 Variant 類型值常數的名稱開頭為 VT_。 不過,有效的 PROPVTIES 集合並不完全相當於自動化和 ActiveX 控制項中使用的一組 VTIES。

這兩個結構之間的唯一差異是每個結構中可允許的一組VT_ (Variant Type / VarType) 標記。 當 VARIANT 和 PROPVARIANT 同時使用特定屬性類型時,類型標籤 (VT_值) 一律具有相同的值。 此外,針對指定的VT_值,用於 VULT 和 PROPVULT 的記憶體內部標記法完全相同。 這種方法可讓類型系統攔截不允許的類型標記,同時允許知識型別用戶端在適當時實作指標轉換。

如需詳細資訊,請參閱下列章節 屬性儲存體考慮