Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Фактические свойства следуют таблице идентификаторов свойств и значений наборов свойств смещения. Каждое свойство хранится в виде DWORD, за которым следует значение типа данных.
Индикаторы типов и их связанные значения описаны в структуре PROPVARIANT.
Все пары type/Value должны начинаться с 32-разрядной границы. Таким образом, значения могут следовать с байтами NULL, чтобы выровнять следующую пару на 32-разрядной границе.
В следующем примере кода вычисляется, сколько байтов требуется для выравнивания по 32-разрядной границе с учетом количества байтов.
cbAdd = (((cbCurrent + 3) >> 2) << 2) - cbCurrent ;
Векторе значений каждое повторение простого скалярного значения меньше 32 битов должно соответствовать естественному выравниванию, а не с 32-разрядным выравниванием. На практике это важно только для типов VT_UI1, VT_UI2, VT_I2и VT_BOOL (которые имеют однобайтовое или двухбайтовое естественное выравнивание). Все остальные типы имеют естественное выравнивание с четырьмя байтами. Некоторые типы, например, VT_R8, фактически имеют 8-байтовую естественную выравнивание, но хранятся так же, как если бы они имели выравнивание с четырьмя байтами.
Значение свойства с индикатором типа VT_I2 | VT_VECTOR будет включать:
- Число элементов DWORD.
- Последовательность упакованных двухбайтовых целых чисел без заполнения null между ними.
Важный
Все 32-разрядные счетчики или типы свойств, хранящиеся в составе элемента векторного свойства, также должны быть выровнены по 32-биту.
Значение свойства идентификатора типа VT_LPSTR | VT_VECTOR будет включать:
- Число элементов DWORD (DWORDcElems).
- Последовательность строк (charrgch[]), каждая из которых предшествует числу длин DWORD и, возможно, за ней следует заполнение null до 32-разрядной границы.