保留的屬性識別碼不能做為屬性標識碼(ID)。 除了 0、1 和大於或等於的任何值之外,可以使用任何屬性識別碼 (ID) 0x80000000。 這些屬性識別碼值會保留供應用程式使用。
下表列出保留的屬性識別碼,以及保留屬性識別碼的描述。
保留屬性識別碼 | 描述 |
---|---|
0 | 保留用於建立選擇性 屬性集顯示名稱字典。 這可讓屬性設定使用者將意義附加至屬性,超出類型指標所提供的屬性。 |
1 | 保留為代碼頁 (Windows) 或腳本 (Macintosh) 的指標,以在解譯屬性集中的字串時使用。 屬性集中的所有字串值都必須使用相同的代碼頁來儲存。 屬性集標頭中的原始作系統值 (PROPERTYSETHEADER::d wOSVer) 會決定代碼頁指標是否對應至 Windows 代碼頁或 Macintosh 腳本。 |
0x80000000 | 保留作為寫入屬性集的地區設定指示。 屬性集的預設地區設定是系統預設的地區設定(LOCALE_SYSTEM_DEFAULT)。 如需LOCALE_SYSTEM_DEFAULT的詳細資訊,請參閱 Win32 API。 當地區設定指標不存在於屬性集時,會使用預設值。 |
0x80000003 | 保留為屬性集行為的指標。 這個屬性標識碼值是一個VT_UI4,開頭為 DWORD 數據類型,其中包含值VT_UI4後面接著指出屬性集行為的 DWORD。 目前,這個值中唯一定義的位是低順序位(0x1)。 如果設定此位,表示屬性集名稱,以屬性標識碼 0 表示,應該視為區分大小寫。 如果未設定此位,或行為屬性 (ID 0x80000003) 不存在,則名稱應該視為不區分大小寫。 |
0xFFFFFFFF | 為了方便程序設計而保留。 它不應該出現在串行化屬性集中。 |
具有高位集的屬性標識碼(也就是負值)會保留供Microsoft日後使用。
在保留屬性中,在範圍中具有標識符值0x80000000 0xBFFFFFFF的屬性,會被視為不瞭解其意義的實作只讀。 例如,如果實作不瞭解屬性0x80000000的意義,它應該允許讀取該屬性,但不寫入或刪除該屬性。 這類實作應該允許範圍中的屬性0xC0000000 0xFFFFFFFE讀取、寫入或刪除。 屬性標識碼0xFFFFFFFF是保留值,而且絕對不應該出現在串行化屬性集中。
屬性集地區設定
應用程式可以選擇支援地區設定或使用預設行為。 建議應用程式允許使用者指定工作地區設定。 這類應用程式應該將使用者指定的地區設定標識碼寫入 屬性。 使用使用者預設地區設定的應用程式 (LOCALE_USER_DEFAULT) 應該將使用者預設地區設定識別碼寫入 屬性。 如需LOCALE_USER_DEFAULT的詳細資訊,請參閱 Win32 API。
注意
如果使用 IPropertySetStorage 介面來建立屬性集,則用戶預設地區設定會自動寫入為地區設定指標。
應用程式也應該處理外部物件的案例,也就是地區設定不是應用程式地區設定、用戶地區設定或系統地區設定的案例。
地區設定指標屬性的類型為 VT_U14,因此是由包含VT_U14的 DWORD 所組成,後面接著包含地區設定標識碼 (LCID) 的 DWORD,如 Win32 API 中所定義。
代碼頁指標
當不是屬性集作者的應用程式變更集合中字串類型的屬性時,它應該檢查代碼頁指標,並採取下列其中一個動作:
- 以代碼頁指標所指定的格式撰寫字串。
- 取代並重寫以變更代碼頁。
如果應用程式無法辨識此指標,則不應該修改 屬性。 屬性集的所有建立者都必須撰寫代碼頁指示器;不過,如果代碼頁指標不存在,則必須假設讀取器計算機上的佔位代碼頁。
注意
如果 IPropertySetStorage 介面用來建立屬性集,則會自動寫入代碼頁指標。
Win32 API 中會提供代碼頁的可能值(如需詳細資訊,請參閱 GetACP 函式)和 Macintosh Volume VI,第 14-111 頁。 (某些語言和國家/地區可能無法使用這些資源。例如,US ANSI 代碼頁是以0x04E4 (1252 英十進位) 表示,而 Unicode 的代碼頁則為 0x04B0 (1200 英十進位)。
建議您盡可能使用 Unicode 代碼頁,並在儲存和擷取期間使用 VT_LPWSTR,而不是使用 VT_LPSTR 來避免多位元組 <-> Unicode 轉換。 針對所有屬性集使用相同的代碼頁,是達成全球互通屬性集的唯一方法。 在 Unicode 或非 Unicode 代碼頁中,請注意VT_LPSTR或VT_BSTR開頭的計數是 位元組 計數,而不是 字元 計數。 這個位元組計數包含字串結尾的一或兩個零位元組(位元串的 NULL 終止符)。
屬性標識碼 1 是VT_I2型別,開頭為 DWORD,其中包含值VT_I2後面接著指出代碼頁的 SHORT。