Поделиться через


Функция StgCreateDocfile (coml2api.h)

Функция StgCreateDocfile создает новый объект хранилища составных файлов, используя предоставленную COM реализацию составного файла для интерфейса IStorage .

Примечание Приложения должны использовать новую функцию StgCreateStorageEx вместо StgCreateDocfile, чтобы воспользоваться преимуществами расширенных функций структурированного хранилища. Эта функция StgCreateDocfile по-прежнему существует для совместимости с Windows 2000.
 

Синтаксис

HRESULT StgCreateDocfile(
  [in]  const WCHAR *pwcsName,
  [in]  DWORD       grfMode,
  [in]  DWORD       reserved,
  [out] IStorage    **ppstgOpen
);

Параметры

[in] pwcsName

Указатель на строковое имя Юникода, завершаемое null, для создаваемого составного файла. Он передается в файловую систему без интерпретации. Это может быть относительное имя или ЗНАЧЕНИЕ NULL. Если значение РАВНО NULL, временный составной файл выделяется с уникальным именем.

[in] grfMode

Указывает режим доступа, используемый при открытии нового объекта хранилища. Дополнительные сведения см. в разделе Константы STGM. Если вызывающий объект указывает режим транзакций вместе с STGM_CREATE или STGM_CONVERT, то при вызове операции фиксации для корневого хранилища выполняется перезапись или преобразование. Если iStorage::Commit не вызывается для корневого объекта хранилища, будет восстановлено предыдущее содержимое файла. STGM_CREATE и STGM_CONVERT нельзя объединить с флагом STGM_NOSNAPSHOT, так как при перезаписи или преобразовании файла в режиме транзакций требуется копия snapshot.

[in] reserved

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

[out] ppstgOpen

Указатель на расположение указателя IStorage на новый объект хранилища.

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

StgCreateDocfile также может возвращать любые ошибки файловой системы или системные ошибки, заключенные в HRESULT. Дополнительные сведения см. в разделах Стратегии обработки ошибок и Обработка неизвестных ошибок.

Комментарии

Функция StgCreateDocfile создает новый объект хранилища, используя предоставленную COM реализацию составного файла для интерфейса IStorage . Имя открытого составного файла можно получить, вызвав метод IStorage::Stat .

StgCreateDocfile создает файл, если он не существует. Если он существует, то использование флагов STGM_CREATE, STGM_CONVERT и STGM_FAILIFTHERE в параметре grfMode указывает, как продолжить. Дополнительные сведения см. в разделе Константы STGM.

Если составной файл открыт в режиме транзакций (параметр grfMode указывает STGM_TRANSACTED) и файл с таким именем уже существует, существующий файл не изменяется до тех пор, пока не будут зафиксированы все незавершенные изменения. Если вызывающий процесс не имеет доступа на запись к существующему файлу (из-за управления доступом в файловой системе), параметр grfMode может указывать только STGM_READ и не STGM_WRITE или STGM_READWRITE. Полученный новый открытый составной файл по-прежнему можно записать в, но последующая операция фиксации завершится ошибкой (в режиме транзакций разрешения на запись применяются во время фиксации).

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

Если параметр grfMode указывает, STGM_TRANSACTED и файл с именем, указанным параметром pwcsName , еще не существует, файл создается немедленно. В файловой системе, управляемой доступом, вызывающий объект должен иметь разрешения на запись в каталоге файловой системы, в котором создается составной файл. Если STGM_TRANSACTED не указан, а STGM_CREATE указан, существующий файл с тем же именем удаляется перед созданием нового файла.

StgCreateDocfile можно использовать для создания временного составного файла, передав значение NULL для параметра pwcsName . Однако эти файлы являются временными только в том смысле, что у них есть предоставленное системой уникальное имя, которое, скорее всего, не имеет смысла для пользователя. Вызывающий объект отвечает за удаление временного файла после завершения работы с ним, если для параметра grfMode не указан STGM_DELETEONRELEASE.

Требования

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

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

Константы STGM

StgCreateDocFileOnILockBytes

StgCreateStorageEx