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