Метод IStorage::OpenStorage (objidl.h)

Метод OpenStorage открывает существующий объект хранилища с указанным именем в указанном режиме доступа.

Синтаксис

HRESULT OpenStorage(
  [in]  const OLECHAR *pwcsName,
  [in]  IStorage      *pstgPriority,
  [in]  DWORD         grfMode,
  [in]  SNB           snbExclude,
  [in]  DWORD         reserved,
  [out] IStorage      **ppstg
);

Параметры

[in] pwcsName

Указатель на строку Unicode расширенных символов с завершающим нулем, содержащую имя открываемого объекта хранилища. Символы от 000 до 01f, служащие как первый символ имени потока/хранилища, зарезервированы для использования OLE. Это ограничение составного файла, а ограничение структурированного хранения. Он игнорируется, если pstgPriority не равно NULL.

[in] pstgPriority

Должен иметь значение NULL. Значение, отличное от NULL, вернет STG_E_INVALIDPARAMETER.

[in] grfMode

Указывает режим доступа, используемый при открытии объекта хранения. Описание возможных значений см. в разделе Константы STGM. Другие выбираемые режимы хотя бы должны задавать STGM_SHARE_EXCLUSIVE при вызове этого метода.

[in] snbExclude

Должен иметь значение NULL. Значение, отличное от NULL, вернет STG_E_INVALIDPARAMETER.

[in] reserved

Зарезервировано для будущего использования; должно иметь значение нуль.

[out] ppstg

При успешном выполнении указатель на расположение указателя IStorage на открытый объект хранилища. Этот параметр имеет значение NULL , если возникает ошибка.

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

Этот метод может возвращать одно из этих значений.

Код возврата Описание
S_OK Объект хранилища был успешно открыт.
E_PENDING Только асинхронное хранилище. Часть или все данные хранилища в настоящее время недоступны.
STG_E_ACCESSDENIED Недостаточно разрешений для открытия объекта хранилища.
STG_E_FILENOTFOUND Объект хранилища с указанным именем не существует.
STG_E_INSUFFICIENTMEMORY Объект хранилища не был открыт из-за нехватки памяти.
STG_E_INVALIDFLAG Значение, указанное для параметра grfMode , не является допустимым значением констант STGM .
STG_E_INVALIDFUNCTION Указанное сочетание флагов в параметре grfMode не поддерживается.
STG_E_INVALIDNAME Недопустимое значение для pwcsName.
STG_E_INVALIDPOINTER Недопустимый указатель, указанный для объекта хранилища.
STG_E_INVALIDPARAMETER Один из параметров был недопустим.
STG_E_REVERTED Объект хранилища был признан недействительным в результате операции отменить изменения над ним в дереве транзакций.
STG_E_TOOMANYOPENFILES Объект хранилища не был создан из-за слишком большого количества открытых файлов.
STG_S_CONVERTED Существующий поток с указанным именем был заменен новым объектом хранилища, содержащим один поток с именем CONTENTS. В режиме прямого подключения новое хранилище немедленно записывается на диск. В режиме транзакций новое хранилище записывается во временное хранилище в памяти, а затем записывается на диск при фиксации.

Комментарии

Если параметр pstgPriority имеет значение NULL, он игнорируется. Если параметр pstgPriority не равен NULL, это указатель IStorage на предыдущее открытие элемента объекта хранилища, обычно открытого в режиме приоритета. Объект хранилища должен быть закрыт и вновь открыт в соответствии с grfMode. Когда метод IStorage::OpenStorage возвращает значение , pstgPriority становится недействительным. Используйте значение, указанное в параметре ppstg .

Объекты хранилища можно открыть с помощью STGM_DELETEONRELEASE, в этом случае объект уничтожается при получении окончательного выпуска. Это полезно для создания временных объектов хранения.

Требования

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

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

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

IStorage::CreateStorage