Serializace sady vlastností
Existují dvě verze formátu serializace sady vlastností. Původní specifikace popisuje verzi 0 formátu. Další informace najdete v formátu verze. Verze 1 rozšiřuje původní verzi. Všechny sady vlastností verze 0 jsou platné jako sady vlastností verze 1. Pole Format Version v hlavičce serializované sady vlastností označuje verzi.
Následující položky identifikují rozdíly mezi verzí 0 a verzí 1 sady vlastností serializace formátů.
Podpora nových hodnot VARTYPE Další informace o VARTYPE hodnoty a jejich použití naleznete v tématu datové typy a struktury IDispatch a PROPVARIANT struktury.
Následující VARTYPE hodnoty nejsou podporovány v sadách vlastností verze 0, ale jsou podporovány ve verzi 1:
VT_I1
VT_VECTOR | VT_I1
VT_INT
VT_UINT
VT_DECIMAL
Kromě toho lze SafeArrays serializovat v sadě vlastností. Přítomnost SafeArray je označena VT_ARRAY bit kombinované pomocí operace OR s prvky pole vt vt člen PROPVARIANT struktury. Například Pole SafeArray se 4 bajtovými celými čísly má typ VT_ARRAY | VT_I4.
Následující typy elementů jsou platné pro SafeArray v serializované sadě vlastností:
VT_I1 VT_UI1 VT_I2 VT_UI2 VT_I4 VT_UI4 VT_INT VT_UINT VT_R4 VT_R8 VT_CY VT_DATE VT_BSTR VT_BOOL VT_DECIMAL VT_ERROR VT_VARIANT Pokud je zadán datový typ VT_VARIANT, označuje, že SafeArray sám obsahuje PROPVARIANT struktury. Typy těchto prvků musí být z předchozího seznamu, s výjimkou těch, které nemohou obsahovat vnořené typy VT_VARIANT.
Mějte na paměti, že implementace IPropertyStorage musí být schopny obnovit elegantně vrácením chyby, když dojde k novému typu; Například typy VARENUM.
V názvech vlastností rozlišují malá a velká písmena. Názvy vlastností, například ty zadané v IPropertyStorage::WritePropertyNames metoda, nerozlišují malá a velká písmena v sadách vlastností verze 0. V sadách vlastností verze 1 můžou být názvy vlastností citlivé na malá a velká písmena v závislosti na hodnotě nové vlastnosti Chování.
Vlastnost Chování je ID vlastnosti 0x80000003 s typem VT_UI4. Pokud je nastaven nejnižší bit této hodnoty, rozlišují se v názvech sady vlastností malá a velká písmena. Nastavte příznak PROPSETFLAG_CASE_SENSITIVE v grfFlags parametru IPropertySetStorage::Create pro určení sady vlastností s rozlišováním velkých a malých písmen.
Dlouhé názvy vlastností. Názvy vlastností pro sady vlastností verze 0 musí být menší nebo rovny 256 znakům, včetně ukončování řetězce, pro sady vlastností na znakové stránce Unicode. Pokud není na znakové stránce Unicode, musí být menší než 256 bajtů. Sady vlastností verze 1 mohou mít na druhou stranu názvy vlastností s neomezenou délkou, i když jsou stále omezeny limitem celkové velikosti vlastnosti 256 kilobajtů (KB).
Doporučuje se, aby implementace IPropertyStorage vytvářet a udržovat sady vlastností verze 0 ve výchozím nastavení. Pokud volající následně požádá o funkci specifickou pro formát verze 1, měla by se aktualizovat pouze verze sady vlastností. Pokud je například vlastnost typu VT_ARRAY zapsána nebo pokud je zapsán dlouhý název vlastnosti, měla by implementace aktualizovat formát sady vlastností na verzi 1. K jedné výjimce tohoto návodu dochází, pokud je PROPSETFLAG_CASE_SENSITIVE hodnota výčtu zadána ve volání IPropertySetStorage::Create. V tomto případě musí být sada vlastností vytvořena jako sada vlastností verze 1.