Функция OpenFile (winbase.h)
Создает, открывает, повторно открывает или удаляет файл.
Синтаксис
HFILE OpenFile(
[in] LPCSTR lpFileName,
[out] LPOFSTRUCT lpReOpenBuff,
[in] UINT uStyle
);
Параметры
[in] lpFileName
Имя файла.
Строка должна состоять из символов из 8-разрядной кодировки Windows. Функция OpenFile не поддерживает имена файлов в Юникоде или открытие именованных каналов.
[out] lpReOpenBuff
Указатель на структуру OFSTRUCT , которая получает сведения о файле при его первом открытии.
Структура может использоваться в последующих вызовах функции OpenFile для просмотра открытого файла.
Структура OFSTRUCT содержит элемент строки пути, длина которой ограничена OFS_MAXPATHNAME символами, которая составляет 128 символов. Из-за этого нельзя использовать функцию OpenFile для открытия файла с длиной пути, превышающей 128 символов. Функция CreateFile не имеет этого ограничения на длину пути.
[in] uStyle
Выполняемое действие.
Этот параметр может быть одним или несколькими из следующих значений.
Значение | Значение |
---|---|
|
Не обрабатывается.
Чтобы создать диалоговое окно с кнопкой Отмена , используйте OF_PROMPT. |
|
Создает новый файл.
Если файл существует, он усекается до нулевой (0) длины. |
|
Удаляет файл. |
|
Открывает файл, а затем закрывает его.
Используйте его для проверки наличия файла. |
|
Заполняет структуру OFSTRUCT , но не выполняет никаких других действий. |
|
Отображает диалоговое окно, если запрошенный файл не существует.
Диалоговое окно сообщает пользователю, что система не может найти файл и содержит кнопки Повтор и Отмена . Кнопка Отмена указывает OpenFile на возврат сообщения об ошибке о том, что файл не найден. |
|
Открывает файл только для чтения. |
|
открывает файл с разрешениями для чтения и записи. |
|
Открывает файл с помощью сведений в буфере повторного открытия. |
|
Для файловых систем на основе MS-DOS открывает файл в режиме совместимости, что позволяет любому процессу на указанном компьютере открывать файл любое количество раз.
Другие попытки открыть файл с другими режимами общего доступа завершаются сбоем. Этот флаг сопоставляется с флагами FILE_SHARE_READ|FILE_SHARE_WRITE функции CreateFile . |
|
Открывает файл без запрета на чтение или запись для других процессов.
Если в файловых системах на основе MS-DOS файл был открыт в режиме совместимости любым другим процессом, функция завершается ошибкой. Этот флаг сопоставляется с флагами FILE_SHARE_READ|FILE_SHARE_WRITE функции CreateFile . |
|
Открывает файл и запрещает доступ на чтение к другим процессам.
В файловых системах на основе MS-DOS, если файл был открыт в режиме совместимости или для доступа на чтение любым другим процессом, функция завершается сбоем. Этот флаг сопоставляется с флагом FILE_SHARE_WRITE функции CreateFile . |
|
Открывает файл и запрещает доступ на запись к другим процессам.
В файловых системах на основе MS-DOS, если файл был открыт в режиме совместимости или для доступа на запись любым другим процессом, функция завершается сбоем. Этот флаг сопоставляется с флагом FILE_SHARE_READ функции CreateFile . |
|
Открывает файл в монопольном режиме и запрещает доступ для чтения и записи к другим процессам. Если файл был открыт в любом другом режиме для чтения и записи, даже текущим процессом, функция завершается ошибкой. |
|
Проверяет, совпадают ли дата и время файла, когда он был открыт ранее.
Это полезно в качестве дополнительного проверка для файлов, доступных только для чтения. |
|
открывает файл только для записи. |
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение указывает дескриптор файла, используемый при выполнении операций ввода-вывода файла. Чтобы закрыть файл, вызовите функцию CloseHandle , используя этот дескриптор.
Если функция завершается сбоем, возвращаемое значение будет HFILE_ERROR. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Если параметр lpFileName указывает только имя файла и расширение, эта функция ищет соответствующий файл в следующих каталогах в указанном порядке:
- Каталог, в который загружается приложение.
- Текущий каталог.
-
Системный каталог Windows.
Используйте функцию GetSystemDirectory , чтобы получить путь к этому каталогу.
-
16-разрядный системный каталог Windows.
Функция, извлекающая путь к этому каталогу, не существует, но выполняется поиск.
-
Каталог Windows.
Используйте функцию GetWindowsDirectory , чтобы получить путь к этому каталогу.
- Каталоги, перечисленные в переменной среды PATH.
Функция OpenFile не поддерживает флаг OF_SEARCH , поддерживаемый 16-разрядной функцией Windows OpenFile . Флаг OF_SEARCH указывает системе на поиск соответствующего файла, даже если имя файла содержит полный путь. Используйте функцию SearchPath для поиска файла.
Нарушение общего доступа возникает, если предпринимается попытка открыть файл или каталог для удаления на удаленном компьютере, если значение параметра uStyle является OF_DELETE флагом доступа OR'ed с любым другим флагом доступа, а удаленный файл или каталог не были открыты с FILE_SHARE_DELETE общего доступа. Чтобы избежать нарушения общего доступа в этом сценарии, откройте удаленный файл или каталог только с OF_DELETE доступом или вызовите Метод DeleteFile , не открывая файл или каталог для удаления.
В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Да |
SMB 3.0 Transparent Failover (TFO) | Да |
SMB 3.0 с масштабируемыми общими папками (SO) | Да |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Да |
CsvFs выполняет перенаправление операций ввода-вывода для сжатых файлов.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |