Функция OpenFile создает, открывает, повторно открывает или удаляет файл.
Обратите внимание! на то, что эта функция предусматривается только для совместимости с 16-разрядными версиями Windows. Новые приложения должны использовать функцию CreateFile. |
Синтаксис
HFILE OpenFile( LPCSTR lpFileName, // имя файла LPOFSTRUCT lpReOpenBuff, // информация о файле UINT uStyle // действия и атрибуты ); |
Параметры
lpFileName
[in] Указатель на символьную строку с нулем в конце, которая именует открываемый файл. Строка должна состоять из букв или знаков символьного набора Windows. Функция OpenFile не поддерживает Unicode имена файлов. А также, OpenFile не поддерживает открытие именованных каналов.lpReOpenBuff
[out] Указатель на структуру OFSTRUCT, которая получает информацию о файле, когда он впервые открывается. Структура может использоваться в последующих вызовах функции OpenFile, чтобы обратиться к открытому файлу.Структура OFSTRUCT содержит член со строкой имени пути, длина которого ограничена количеством символов определяемых значением OFS_MAXPATHNAME. OFS_MAXPATHNAME в текущий момент определяется как 128. Вследствие этого, Вы не сможете использовать функцию OpenFile, чтобы открыть файл, длина пути которого будет больше 128 символов. Функция CreateFile не имеет такого ограничения длины пути.
uStyle
[in] Предпринимаемое действие. Этот параметр может состоять из одного или нескольких нижеследующих значений.Значение | Предназначение |
---|---|
OF_CANCEL | Игнорируется. Чтобы создать диалоговое окно, содержащее кнопку Cancel (Отменить), используйте флажок OF_PROMPT. |
OF_CREATE | Создает новый файл. Если файл уже существует, он сокращается до нулевой длины. |
OF_DELETE | Удаляет файл. |
OF_EXIST | Открывает файл, а затем закрывает его. Используется, чтобы убедиться в существовании файла. |
OF_PARSE | Заполняет поля структуры OFSTRUCT, но не делает никаких других действий. |
OF_PROMPT | Показывает на экране диалоговое окно, если затребованный файл не существует. Диалоговое окно сообщает пользователю, что система не может найти файл, и оно содержит кнопки Retry (Повторить попытку) и Cancel (Отменить). Выбор кнопки Cancel предписывает функции OpenFile возвратить сообщение об ошибке "файл не найден". |
OF_READ | Открывает файл только для чтения. |
OF_READWRITE | Открывает файл для чтения и записи. |
OF_REOPEN | Открывает файл, используя информацию в буфере повторного открытия. |
OF_SHARE_COMPAT | Файловые
системы, базирующиеся на MS DOS ,
открывают файл в режиме
совместимости, давая возможность
любому процессу на заданном
компьютере открыть файл любое
количество раз. Другие попытки
открыть в каком-либо другом режиме
совместного использования
завершаются ошибкой (сбоем). Windows NT/2000/XP: Этот флажок соответствует флажкам FILE_SHARE_READ | FILE_SHARE_WRITE функции CreateFile. |
OF_SHARE_DENY_NONE | Открывает
файл без помех доступу к чтению или
записи другими процессами. В файловых
системах базирующихся на MS-DOS,
если файл открылся в режиме
совместимости любым другим
процессом, функция завершается
ошибкой.
Windows NT/2000/XP: Этот флажок соответствует флажкам FILE_SHARE_READ | FILE_SHARE_WRITE функции CreateFile. |
OF_SHARE_DENY_READ | Открывает
файл и не дает доступ для
чтения другим процессам. В файловых системах базирующихся на MS-DOS,
если файл открылся в режиме
совместимости или доступа для чтения
любым другим процессом, функция
завершается ошибкой.
Windows NT/2000/XP: Этот флажок соответствует флажку FILE_SHARE_READ | FILE_SHARE_WRITE функции CreateFile. |
OF_SHARE_DENY_WRITE | Открывает
файл и не дает доступ для записи
другим процессам. В файловых
системах базирующихся на MS-DOS,
если файл открылся в режиме
совместимости или доступа для записи
любым другим процессом, функция
завершается ошибкой.
Windows NT/2000/XP: Этот флажок соответствует флажку FILE_SHARE_READ | FILE_SHARE_WRITE функции CreateFile. |
OF_SHARE_EXCLUSIVE | Открывает файл в режиме монопольного использования, отказывая в доступе и для чтения и для записи другим процессам. Если файл открылся в любом другом режиме для доступа к чтению или записи, даже текущим процессом, функция завершается ошибкой. |
OF_VERIFY | Проверяет, что дата и время файла - те же самые, как и тогда, когда он был предварительно открыт. Это полезно как дополнительная проверка файлов только для чтения. |
OF_WRITE | Открывает файл только для записи. |
Возвращаемые значения
Если функция завершается успешно, возвращаемое значение определяет дескриптор файла.
Если функция завершается ошибкой, возвращаемое значение - HFILE_ERROR. Чтобы получить дополнительные данные об ошибке, вызовите GetLastError.
Замечания
Если параметр lpFileName определяет только имя файла и расширение, эта функция производит поиск соответствующего файла в нижеследующих каталогах, в указанном порядке:
Windows NT/2000/XP: Имя этого каталога SYSTEM32.
Параметр lpFileName не может содержать буквы или знаки символа подстановки.
Функция OpenFile не поддерживает флажок OF_SEARCH, поддерживаемый функцией OpenFile 16-разрядного Windows. Флажок OF_SEARCH предписывает системе искать соответствующий файл, даже тогда, когда имя файла включает полный путь к нему. Чтобы найти такой файл, используйте функцию SearchPath.
Windows 2000/XP: Нарушение совместного использования произойдет тогда, если делается попытка открыть файл или каталог для стирания на удаленной машине, когда значение параметра uStyle является флажком доступа OF_DELETE объединенным при помощи OR с каким-либо другим флажком доступа, а удаленный файл или каталог не открывались с флажком совместного доступа FILE_SHARE_DELETE. Чтобы избежать нарушения совместного использования в этом сценарии, откройте удаленный файл или каталог только с доступом OF_DELETE или вызовите функцию DeleteFile без первоначального открытия файла или каталога для удаления.
Windows Me/98/95: Это замечание не применяется.Смотри также
Обзор Управление файлами, Функции, используемые в управлении файлами, CreateFile, GetSystemDirectory, GetWindowsDirectory, OFSTRUCT, SearchPath
Размещение и совместимость OpenFile |
||
К |
Windows XP |
Да |
л |
Windows 2000 Professional |
Да |
и |
Windows NT Workstation |
Да |
е |
Windows Me |
Да |
н |
Windows 98 |
Да |
т |
Windows 95 |
Да |
С |
Windows Server 2003 |
Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека |
Kernel32.lib |
|
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в |
Winbase.h |
|
- включено в |
Windows.h |
|
Unicode |
- |
|
Замечания по платформе |
Не имеется |