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

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

Синтаксис

HRESULT CreateStorage(
  [in]  const OLECHAR *pwcsName,
  [in]  DWORD         grfMode,
  [in]  DWORD         reserved1,
  [in]  DWORD         reserved2,
  [out] IStorage      **ppstg
);

Параметры

[in] pwcsName

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

[in] grfMode

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

[in] reserved1

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

[in] reserved2

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

[out] ppstg

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

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

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

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

Комментарии

Если хранилище с именем, указанным в параметре pwcsName , уже существует в родительском объекте хранилища, а параметр grfMode включает флаг STGM_CREATE, существующее хранилище заменяется новым. Если параметр grfMode содержит флаг STGM_CONVERT, существующий элемент преобразуется в объект потока с именем CONTENTS и создается новый объект хранения, содержащий объект потока CONTENTS. Уничтожение старого элемента и создание нового объекта хранения подчиняются режиму транзакций родительского объекта хранения. Имейте в виду, что вы не можете использовать STGM_CONVERT, если вы также используете STGM_CREATE.

Предоставленная COM реализация составного файла метода IStorage::CreateStorage не поддерживает следующее поведение:

  • Флаг STGM_PRIORITY для некоревых хранилищ.
  • Открытие одного и того же объекта хранилища несколько раз из одного родительского хранилища. Необходимо указать флаг STGM_SHARE_EXCLUSIVE.
  • Флаг STGM_DELETEONRELEASE. Если этот флаг указан, функция возвращает STG_E_INVALIDFLAG.
Если объект хранилища с таким же именем уже существует и grfMode имеет значение STGM_FAILIFTHERE, этот метод завершается ошибкой с возвращаемым значением STG_E_FILEALREADYEXISTS.

Требования

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

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

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

IStorage::OpenStorage