Метод IStorage::CreateStream (objidl.h)
Метод CreateStream создает и открывает объект потока с указанным именем, содержащимся в этом объекте хранилища. Все элементы в объектах хранилища, как потоки, так и другие объекты хранения, хранятся в одном пространстве имен.
Синтаксис
HRESULT CreateStream(
[in] const OLECHAR *pwcsName,
[in] DWORD grfMode,
[in] DWORD reserved1,
[in] DWORD reserved2,
[out] IStream **ppstm
);
Параметры
[in] pwcsName
Указатель на строку Юникода с широким символом, завершающуюся null, которая содержит имя только что созданного потока. Имя можно использовать позже для открытия или повторного открытия потока. Длина имени не должна превышать 31 символ, не включая признак конца строки. Символы от 000 до 01f, служащие как первый символ имени потока/хранилища, зарезервированы для использования OLE. Это ограничение составного файла, а ограничение структурированного хранения.
[in] grfMode
Указывает режим доступа, используемый при открытии только что созданного потока. Дополнительные сведения и описания возможных значений см. в разделе Константы STGM.
[in] reserved1
Зарезервировано для будущего использования; должно иметь значение нуль.
[in] reserved2
Зарезервировано для будущего использования; должно иметь значение нуль.
[out] ppstm
При возврате указатель на расположение нового указателя интерфейса IStream . Это допустимо только в том случае, если операция выполнена успешно. При возникновении ошибки этому параметру присваивается значение NULL.
Возвращаемое значение
Этот метод может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
S_OK | Новый поток успешно создан. |
E_PENDING | Только асинхронное хранилище. Часть или все необходимые данные в настоящее время недоступны. |
STG_E_ACCESSDENIED | Недостаточно разрешений для создания потока. |
STG_E_FILEALREADYEXISTS | Имя, указанное для потока, уже существует в объекте хранилища, а параметр grfMode включает значение STGM_FAILIFTHERE. |
STG_E_INSUFFICIENTMEMORY | Поток не был создан из-за нехватки памяти. |
STG_E_INVALIDFLAG | Значение, указанное для параметра grfMode , не является допустимым значением констант STGM . |
STG_E_INVALIDFUNCTION | Указанное сочетание флагов в параметре grfMode не поддерживается; например, если этот метод вызывается без флага STGM_SHARE_EXCLUSIVE. |
STG_E_INVALIDNAME | Недопустимое значение для pwcsName. |
STG_E_INVALIDPOINTER | Недопустимый указатель, указанный для объекта потока. |
STG_E_INVALIDPARAMETER | Один из параметров был недопустимым. |
STG_E_REVERTED | Объект хранилища был признан недействительным в результате операции отменить изменения над ним в дереве транзакций. |
STG_E_TOOMANYOPENFILES | Поток не был создан, так как открыто слишком много файлов. |
Комментарии
Если поток с именем, указанным в параметре pwcsName , уже существует, а параметр grfMode содержит флаг STGM_CREATE, существующий поток заменяется только что созданным. Как уничтожение старого потока, так и создание нового объекта потока подчиняются режиму транзакций родительского объекта хранилища.
Предоставленная COM реализация составного файла метода IStorage::CreateStream не поддерживает следующее поведение:
- Флаг STGM_DELETEONRELEASE не поддерживается.
- Режим транзакций (STGM_TRANSACTED) не поддерживается для объектов потока.
- Открытие одного потока несколько раз из одного хранилища не поддерживается. Флаг режима общего доступа STGM_SHARE_EXCLUSIVE должен быть указан в параметре grfMode .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | objidl.h |
Библиотека | Uuid.lib |
DLL | Ole32.dll |