Реализация файла 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. Для этого метода требуется, чтобы режим общего доступа, указанный в параметре grfMode , был STGM_SHARE_EXCLUSIVE, а режим доступа — STGM_READ или STGM_READWRITE (STGM_WRITE не поддерживается).
Удаляет свойство, заданное в этом хранилище свойств.
Создает объект, используемый для перечисления структур 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.
Связанные темы