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


Метод IPropertySetStorage::Open (propidl.h)

Метод Open открывает набор свойств, содержащийся в объекте хранилища набора свойств.

Синтаксис

HRESULT Open(
  [in]  REFFMTID         rfmtid,
  [in]  DWORD            grfMode,
  [out] IPropertyStorage **ppprstg
);

Параметры

[in] rfmtid

Идентификатор формата (FMTID) открываемого свойства. Дополнительные сведения об известных и предопределенных FMTID в пакете SDK для платформы см. в разделе Predefined Property Set Format Identifiers.

[in] grfMode

Режим доступа, в котором открывается только что созданный набор свойств. Эти флаги взяты из констант STGM. Флаги, которые могут использоваться, и их значения в контексте этого метода описаны в следующем разделе примечаний.

[out] ppprstg

Указатель на переменную указателя IPropertyStorage , которая получает указатель интерфейса на вложенный объект хранилища запрошенных свойств.

Возвращаемое значение

Этот метод поддерживает стандартное возвращаемое значение E_UNEXPECTED, а также следующее:

Комментарии

Режим открытия набора свойств указывается в параметре grfMode. Эти флаги взяты из констант STGM, но для этого метода юридические значения и их значения приведены ниже (допустимы только определенные сочетания этих значений флагов).

Значение Значение
STGM_DIRECT Открывает набор свойств без дополнительного уровня вложения транзакций. Это значение по умолчанию (поведение, если не указано ни STGM_DIRECT, ни STGM_TRANSACTED).
STGM_TRANSACTED Открывает набор свойств с дополнительным уровнем вложенности транзакций (за пределами транзакции, если она есть, в этом объекте хранилища набора свойств). Режим транзакций доступен только для неимплированных наборов свойств. Изменения в наборе свойств должны быть зафиксированы с помощью вызова метода IPropertyStorage::Commit , прежде чем они станут видимы для транзакции в этом хранилище наборов свойств.
STGM_READ Открывает набор свойств с доступом на чтение. Для хранилища набора свойств требуется разрешение на чтение.
STGM_WRITE Открывает набор свойств с доступом на запись. Не все реализации IPropertyStorage поддерживают этот режим.
STGM_READWRITE Открывает набор свойств с доступом на чтение и запись. Имейте в виду, что этот флаг не является двоичным ИЛИ значений STGM_READ и STGM_WRITE.
STGM_SHARE_DENY_NONE Последующим открытиям набора свойств из этого хранилища набора свойств не запрещается доступ на чтение или запись. (Доступно не во всех реализациях.)
STGM_SHARE_DENY_READ Последующим открытиям набора свойств из этого хранилища набора свойств запрещается доступ на чтение. Доступно не во всех реализациях.
STGM_SHARE_DENY_WRITE Последующим открытиям набора свойств из этого хранилища набора свойств запрещается доступ на запись. Это значение обычно используется в режиме транзакций, чтобы предотвратить создание ненужных копий объекта, открытых несколькими пользователями. То есть, если STGM_TRANSACTED указано, но это значение не указано, выполняется snapshot, независимо от того, имеются ли последующие отверстия. Таким образом, можно повысить производительность, указав это значение. Доступно не во всех реализациях.
STGM_SHARE_EXCLUSIVE Последующие открытия набора свойств из хранилища этого набора свойств невозможны. Имейте в виду, что это значение не является простым двоичным ИЛИ элементов STGM_SHARE_DENY_READ и STGM_SHARE_DENY_WRITE.
 

Этот метод зависит от ограничений базового IStorage::OpenStream (для простых наборов свойств) или IStorage::OpenStorage (для неимпляных наборов свойств). Дополнительные сведения о простых и неимпляемых наборах свойств см. в разделе Storage and Stream Objects for a Property Set. Например, при использовании реализации файла IPropertySetStorage-Compound необходимо указать STGM_SHARE_EXCLUSIVE в параметре grfModeдля IPropertySetStorage::Open. И наоборот, при использовании изолированной реализации IPropertySetStorageна IPropertySetStorage::Open распространяются ограничения, которые применяются к IStorage, указанному вызывающим объектом.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header propidl.h (включая Objbase.h)
Библиотека Uuid.lib
DLL Ole32.dll

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

Пример EnumAll

IPropertySetStorage

IPropertySetStorage::Create

PROPVARIANT

Примеры

Пример WriteRead