Поделиться через


Реализация файла 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, который предоставляет указатель на перечислитель, который можно использовать для перечисления наборов свойств в хранилище.

Методы

IPropertySetStorage::Create

Создает новый набор свойств в текущем хранилище составных файлов и при возврате предоставляет указатель интерфейса на реализацию составного файла IPropertyStorage . В этой реализации наборы свойств могут выполняться только в том случае, если указано PROPSETFLAG_NONSIMPLE. Этот метод требует, чтобы режим общего доступа, указанный в параметре grfMode , был STGM_SHARE_EXCLUSIVE, а режим доступа — STGM_READ или STGM_READWRITE (режим STGM_WRITE не поддерживается).

IPropertySetStorage::Open

Открывает существующий набор свойств в текущем хранилище свойств. При возврате он предоставляет указатель интерфейса на реализацию составного файла IPropertyStorage. Для этого метода требуется, чтобы режим общего доступа, указанный в параметре grfMode , был STGM_SHARE_EXCLUSIVE, а режим доступа — STGM_READ или STGM_READWRITE (STGM_WRITE не поддерживается).

IPropertySetStorage::D elete

Удаляет свойство, заданное в этом хранилище свойств.

IPropertySetStorage::Enum

Создает объект, используемый для перечисления структур STATPROPSETSTG . Каждая структура STATPROPSETSTG предоставляет данные об одном наборе свойств.

Комментарии

Начиная с Windows 2000, реализация составного файла IPropertySetStorage поддерживает простой режим. Простой режим указывается флагом STGM_SIMPLE для функций StgCreateStorageEx и StgOpenStorageEx . Если составной файл открывается в простом режиме, связанная реализация IPropertySetStorage ограничена следующим образом:

  • Можно создавать только простые наборы свойств. То есть указание значения PROPSETFLAG_NONSIMPLE в параметре grfFlags для метода IPropertySetStorage::Create приводит к ошибке.
  • После создания составного файла с помощью StgCreateStorageEx с помощью STGM_SIMPLE и запроса интерфейса IPropertySetStorageможно вызвать только один раз. Затем необходимо освободить интерфейс IPropertyStorage перед повторным вызовом метода Create . Дополнительные сведения о простом режиме см. в разделе Константы STGM.
  • Нельзя использовать метод IPropertySetStorage::Open , чтобы открыть набор свойств после использования StgCreateStorageEx для создания объекта хранилища. Вместо этого необходимо использовать StgOpenStorageEx перед запросом IPropertySetStorage и вызовом метода Open .
  • После открытия составного файла с stgOpenStorageEx с помощью флага STGM_SIMPLE и запроса интерфейса IPropertySetStorage можно открыть один набор свойств за раз с помощью IPropertySetStorage::Open. Кроме того, общий размер набора свойств может быть невозможно увеличить, пока набор свойств открыт.

Простые наборы свойств не могут выполняться. Вы не можете указать STGM_TRANSACTED в параметре grfmode методов Create и Open , если не указать PROPSETFLAG_NONSIMPLE в параметре grfFlags . Имейте в виду, что простые и несложные наборы свойств не связаны с наборами свойств простого режима, описанными выше. Дополнительные сведения о простых и неимплях наборах свойств см. в разделе Storage and Stream Objects for a Property Set.

Примечание

Наборы свойств DocumentSummaryInformation и UserDefined уникальны тем, что они могут содержать два раздела набора свойств. Дополнительные сведения см. в разделах Наборы свойств DocumentSummaryInformation и UserDefined.

 

IPropertyStorage — реализация составного файла

IPropertySetStorage

IPropertyStorage

IStorage::EnumElements

Константы PROPSETFLAG

STATPROPSETSTG