Метод 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 |