реализация файла IPropertySetStorage-Compound
Реализация объекта хранилища составных файлов COM включает реализацию IPropertyStorage, интерфейс, который управляет одним набором постоянных свойств и IPropertySetStorage, интерфейс, который управляет группами постоянных свойств.
Чтобы получить указатель на составную реализацию файла IPropertySetStorage, укажите имя идентификатора IID_IStorage в качестве параметра riid или используйте функции StgCreateStorageEx или StgOpenStorageEx. В обоих случаях укажите STGFMT_STORAGE в качестве параметра stgfmt. (STGFMT_ANY можно также указать в случае StgOpenStorageEx.) Кроме того, укажите имя, определенное заголовком для идентификатора интерфейса (IID), IID_IPropertySetStorage в качестве параметра riid. Обе функции предоставляют указатель на объект интерфейсе IPropertySetStorage.
Другой способ получить указатель на реализацию составного файла заключается в том, чтобы указать имя, определенное заголовком для идентификатора IID_IStorage в качестве параметра riid, или использовать stgCreateDocfile или функции StgOpenStorage. Это позволит указать указатель на объект интерфейсе IStorage. Если вы хотите иметь дело с наборами постоянных свойств, вызовите IStorage::QueryInterface для интерфейса IPropertySetStorage.
Когда следует использовать IPropertySetStorage
Вызовите методы IPropertySetStorage для создания, открытия или удаления наборов свойств в текущем хранилище наборов свойств составного файла. Существует также метод, IPropertySetStorage::Enum, который предоставляет указатель на перечислитель, который можно использовать для перечисления наборов свойств в хранилище.
Методика
Создает новый набор свойств в текущем хранилище составных файлов и по возвращении предоставляет указатель интерфейса на реализацию IPropertyStorage составной файловой реализации. В этой реализации наборы свойств могут выполняться только в том случае, если указан PROPSETFLAG_NONSIMPLE. Для этого метода требуется, чтобы режим общего доступа, указанный в параметре grfMode , был STGM_SHARE_EXCLUSIVE и что режим доступа должен быть STGM_READ или STGM_READWRITE (режим STGM_WRITE не поддерживается).
Открывает существующий набор свойств в текущем хранилище свойств. При возврате он предоставляет указатель интерфейса на составную реализацию файла IPropertyStorage. Этот метод требует, чтобы режим общего доступа, указанный в параметр е gr grfMode, был STGM_SHARE_EXCLUSIVE, и что режим доступа должен быть STGM_READ или STGM_READWRITE (STGM_WRITE не поддерживается).
Удаляет набор свойств в этом хранилище свойств.
Создает объект, используемый для перечисления структур STATPROPSETSTG. Каждая структура STATPROPSETSTG предоставляет данные об одном наборе свойств.
Замечания
Начиная с Windows 2000, реализация составного файла IPropertySetStorage поддерживает простой режим. Простой режим указывается путем указания флага STGM_SIMPLE для функций StgCreateStorageEx и StgOpenStorageEx. Если составной файл открыт в простом режиме, связанная реализации IPropertySetStor age ограничена следующим образом:
- Можно создать только простые наборы свойств. То есть указание значения PROPSETFLAG_NONSIMPLE в параметре grfFlags для метода IPropertySetStorage::Create приводит к ошибке.
- После создания составного файла с StgCreateStorageEx с помощью STGM_SIMPLE и запроса для интерфейса IPropertySetStorage можно вызывать только IPropertySetStorage::Create один раз. Затем необходимо освободить интерфейс IPropertyStorage перед вызовом метода Create. Дополнительные сведения об простом режиме см. в константы STGM.
- Невозможно использовать метод IPropertySetStorage::Open для открытия набора свойств после использования StgCreateStorageEx для создания объекта хранилища. Вместо этого необходимо использовать StgOpenStorageEx перед запросом IPropertySetStorage и вызов ом метода Open.
- После открытия составного файла с StgOpenStorageEx с помощью флага STGM_SIMPLE и запроса интерфейса IPropertySetStorage можно открыть один набор свойств за раз с помощью IPropertySetStorage::Open. Кроме того, невозможно увеличить общий размер набора свойств, пока набор свойств открыт.
Простые наборы свойств не могут быть трансактированы. Невозможно указать STGM_TRANSACTED в параметре grfmodecreate и Open, если в параметре grfFlags не указано PROPSETFLAG_NONSIMPLE. Помните, что простые и не простые наборы свойств не связаны с наборами свойств простого режима, описанными выше. Дополнительные сведения о простых и неимплевых наборах свойств см. в разделе хранилища и объектов Stream для набора свойств.
Заметка
Наборы свойств DocumentSummaryInformation и UserDefined уникальны в том, что они могут иметь два раздела набора свойств. Дополнительные сведения см. в разделе Наборы свойств DocumentSummaryInformation и UserDefined Property Sets.
Связанные разделы