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


Функция CreateFile2FromAppW (fileapifromapp.h)

Создает или открывает файл или устройство ввода-вывода. Поведение этой функции идентично Функции CreateFile2, за исключением того, что эта функция соответствует модели безопасности приложений универсальная платформа Windows.

Синтаксис

WINSTORAGEAPI HANDLE CreateFile2FromAppW(
  LPCWSTR                           lpFileName,
  DWORD                             dwDesiredAccess,
  DWORD                             dwShareMode,
  DWORD                             dwCreationDisposition,
  LPCREATEFILE2_EXTENDED_PARAMETERS pCreateExParams
) noexcept;

Параметры

lpFileName

Имя создаваемого или открываемого файла или устройства.

Сведения о специальных именах устройств см. в разделе Определение имени устройства MS-DOS.

Чтобы создать файловый поток, укажите имя файла, двоеточие, а затем имя потока. Дополнительные сведения см. в разделе Файловые потоки.

Сведения об отказе от ограничения MAX_PATH без добавления "\?\" см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .

dwDesiredAccess

Запрошенный доступ к файлу или устройству, который можно суммировать как для чтения, записи, так и для нулевого значения.

Чаще всего используются значения GENERIC_READ, GENERIC_WRITE или оба (GENERIC_READ | GENERIC_WRITE). Дополнительные сведения см. в разделах Общие права доступа, Безопасность файлов и Права доступа, Константы прав доступа к файлам и ACCESS_MASK.

Если этот параметр равен нулю, приложение может запрашивать определенные метаданные, такие как атрибуты файла, каталога или устройства, без доступа к этому файлу или устройству, даже если GENERIC_READ доступ был бы запрещен.

Невозможно запросить режим доступа, конфликтующий с режимом общего доступа, заданным параметром dwShareMode в открытом запросе, который уже имеет открытый дескриптор.

dwShareMode

Запрошенный режим общего доступа к файлу или устройству, который можно читать, записывать, удалять, все или нет (см. следующую таблицу). Этот флаг не влияет на запросы доступа к атрибутам или расширенным атрибутам.

Если этот параметр равен нулю и функция выполняется успешно, файл или устройство нельзя предоставить к совместному доступу, и их нельзя будет открыть снова, пока не будет закрыт дескриптор файла или устройства. Дополнительные сведения см. в разделе «Примечания».

Вы не можете запросить режим общего доступа, конфликтующий с режимом доступа, указанным в существующем запросе с открытым дескриптором. Эта функция завершится ошибкой, и функция GetLastError вернет ERROR_SHARING_VIOLATION.

Чтобы разрешить процессу предоставлять общий доступ к файлу или устройству, а другой процесс открывает файл или устройство, используйте совместимое сочетание одного или нескольких из следующих значений. Дополнительные сведения о допустимых сочетаниях этого параметра с параметром dwDesiredAccess см. в разделе Создание и открытие файлов.

Примечание Параметры общего доступа для каждого открытого дескриптора остаются в силе, пока этот дескриптор не будет закрыт, независимо от контекста процесса.

 

Значение Значение
0 0x00000000

Запрещает другим процессам открывать файл или устройство, если они запрашивают доступ к удалению, чтению или записи. Монопольный доступ к файлу или каталогу предоставляется только в том случае, если приложение имеет доступ на запись к файлу.

0x00000004 FILE_SHARE_DELETE

Позволяет последующим операциям открытия файла или устройства запрашивать доступ к удалению.

В противном случае другие процессы не смогут открыть файл или устройство при запросе на удаление доступа.

Если этот флаг не указан, но файл или устройство были открыты для доступа к удалению, функция завершается ошибкой.

Примечание Доступ к удалению позволяет выполнять операции удаления и переименования.
 
0x00000001 FILE_SHARE_READ

Позволяет последующим операциям открытия файла или устройства запрашивать доступ на чтение.

В противном случае другие процессы не смогут открыть файл или устройство, если они запрашивают доступ на чтение.

Если этот флаг не указан, но файл или устройство были открыты для чтения, функция завершается ошибкой.

Если открывается файл или каталог, а этот флаг не указан, а вызывающий объект не имеет доступа на запись к файлу или каталогу, функция завершается сбоем.

0x00000002 FILE_SHARE_WRITE

Позволяет последующим операциям открытия файла или устройства запрашивать доступ на запись.

В противном случае другие процессы не смогут открыть файл или устройство, если они запрашивают доступ на запись.

Если этот флаг не указан, но файл или устройство были открыты для доступа на запись или имеет сопоставление файлов с доступом на запись, функция завершается ошибкой.

dwCreationDisposition

Действие, выполняемое с файлом или устройством, которые существуют или не существуют.

Для устройств, отличных от файлов, этот параметр обычно имеет значение OPEN_EXISTING.

Этот параметр должен иметь одно из следующих значений, которые нельзя объединить:

Значение Значение
CREATE_ALWAYS 2

Всегда создает новый файл.

Если указанный файл существует и доступен для записи, функция усекает файл, выполняется успешно, а для кода последней ошибки задано значение ERROR_ALREADY_EXISTS (183).

Если указанный файл не существует и является допустимым путем, создается новый файл, функция завершается успешно, а код последней ошибки равен нулю.

CREATE_NEW 1

Создает новый файл, только если он еще не существует.

Если указанный файл существует, функция завершается сбоем, а для кода последней ошибки задано значение ERROR_FILE_EXISTS (80).

Если указанный файл не существует и является допустимым путем к расположению, доступному для записи, создается новый файл.

OPEN_ALWAYS 4

Всегда открывает файл.

Если указанный файл существует, функция выполняется успешно, а для кода последней ошибки задано значение ERROR_ALREADY_EXISTS (183).

Если указанный файл не существует и является допустимым путем к расположению, доступному для записи, функция создает файл, а код последней ошибки равен нулю.

OPEN_EXISTING 3

Открывает файл или устройство, только если они существуют.

Если указанный файл или устройство не существует, функция завершается сбоем, а для кода последней ошибки задано значение ERROR_FILE_NOT_FOUND (2).

TRUNCATE_EXISTING 5

Открывает файл и усекает его таким образом, чтобы его размер был равен нулю байтов, только если он существует.

Если указанный файл не существует, функция завершается сбоем, а код последней ошибки имеет значение ERROR_FILE_NOT_FOUND (2).

Вызывающий процесс должен открыть файл с битом GENERIC_WRITE , заданным как часть параметра dwDesiredAccess .

pCreateExParams

Указатель на необязательную структуру CREATEFILE2_EXTENDED_PARAMETERS .

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

Если функция выполняется успешно, возвращаемое значение представляет собой открытый дескриптор для указанного файла, устройства, именованного канала или почтового слота.

Если функция завершается неудачно, возвращается значение INVALID_HANDLE_VALUE. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1803
Верхняя часть fileapifromapp.h