Константы PROPSETFLAG

Константы PROPSETFLAG определяют характеристики набора свойств. Значения, перечисленные в следующей таблице, используются в параметре grfFlags методов IPropertySetStorage , Функции StgCreatePropStg и StgOpenPropStg .

Констант/значение Описание
PROPSETFLAG_DEFAULT
0
Если оставить неуказанным, по умолчанию в набор свойств могут записываться только простые значения свойств. Использование простых значений свойств предотвращает транзакции наборов свойств в составном файле и автономных реализациях IPropertySetStorage. Для этой цели необходимо использовать значения свойств, отличных от e.
PROPSETFLAG_NONSIMPLE
1
Если этот параметр задан, значения неимплясных свойств можно записать в набор свойств, а набор свойств сохраняется в объекте хранилища. К не простым значениям свойств относятся значения с типом VARTYPE, равным VT_STORAGE, VT_STREAM, VT_STORED_OBJECT или VT_STREAMED_OBJECT. Если этот флаг не указан, несложные типы не могут быть записаны в набор свойств. В составном файле и автономных реализациях наборы свойств могут выполняться только при указании PROPSETFLAG_NONSIMPLE .
PROPSETFLAG_ANSI
2
Если этот параметр указан, все строковые значения в наборе свойств, которые явно не являются Юникодом, т. е. значения, отличные от VT_LPWSTR, хранятся на текущей системной кодовой странице ANSI. Дополнительные сведения см. в разделе GetACP. Использовать это значение не рекомендуется. Дополнительные сведения см. в подразделе "Примечания".
Если это значение отсутствует, строковые значения в новом наборе свойств сохраняются в Юникоде. Степень управления, которую предоставляет это значение, необходима, чтобы клиенты, использующие интерфейсы, связанные со свойствами, могли взаимодействовать со стандартными наборами свойств, такими как сводные сведения OLE2, которые могут существовать на кодовой странице ANSI.
PROPSETFLAG_UNBUFFERED
4
Используется только с функциями StgCreatePropStg и StgOpenPropStg ; то есть в автономных реализациях интерфейсов набора свойств. Если этот параметр указан в этих функциях, изменения в наборе свойств не помещаются в буфер. Вместо этого изменения всегда записываются непосредственно в набор свойств. Вызовы методов IPropertyStorage набора свойств изменят его. Однако по умолчанию изменения буферизуются во внутреннем кэше набора свойств и затем записываются в набор свойств при вызове метода IPropertyStorage::Commit .
Настройка PROPSETFLAG_UNBUFFERED снижает производительность, так как внутренний буфер набора свойств автоматически очищается после каждого изменения набора свойств. Однако непосредственное написание изменений предотвратит проблемы с координацией. Например, если объект хранилища открыт в режиме транзакций, а набор свойств буферизируется. Затем при вызове метода IStorage::Commit для объекта хранилища изменения набора свойств не будут приняты в рамках транзакции, так как они находятся в буфере, который еще не был удален. Необходимо вызвать IPropertyStorage::Commit перед вызовом IStorage::Commit , чтобы очистить буфер набора свойств перед фиксацией изменений в хранилище. В качестве альтернативы двум вызовам можно задать PROPSETFLAG_UNBUFFERED , чтобы изменения всегда записывался непосредственно в набор свойств и никогда не помещались во внутренний кэш набора свойств. Затем изменения будут внесены при фиксации транзакционного хранилища.
PROPSETFLAG_CASE_SENSITIVE
8
При указании в именах свойств учитывается регистр. Имена свойств с учетом регистра возможны только в формате сериализации набора свойств версии 1. Дополнительные сведения см. в разделе Сериализация набора свойств.

Комментарии

Эти значения можно задать и проверить с помощью побитовых операций, определяющих способ создания и открытия наборов свойств. Наборы свойств создаются с помощью метода IPropertySetStorage::Create или функции StgCreatePropStg . Они открываются с помощью метода IPropertySetStorage::Open или функции StgOpenPropStg .

Рекомендуется создавать наборы свойств как Юникод, не устанавливая флаг PROPSETFLAG_ANSI в параметре grfFlags . Также рекомендуется избегать использования VT_LPSTR значений и использовать вместо него VT_LPWSTR значения. Если кодовая страница набора свойств имеет значение Юникод, VT_LPSTR строковые значения преобразуются в Юникод при хранении и обратно преобразуются в многобайтовые строковые значения при извлечении. Если кодовая страница набора свойств не является Юникодом, имена свойств, VT_BSTR строки и значения неимпляемых свойств преобразуются в многобайтовые строки при хранении и преобразуются обратно в Юникод при извлечении, используя текущую системную кодовую страницу ANSI.

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Propidl.h

См. также раздел

FmtIdToPropStgName

IPropertySetStorage::Create

IPropertySetStorage::Open

PropStgNameToFmtId

StgCreatePropSetStg

StgCreatePropStg

StgOpenPropStg