Функция OpenFile


Функция 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  определяет только имя файла и расширение, эта функция производит поиск соответствующего файла в нижеследующих каталогах, в указанном порядке:

  1. Каталог из  которого загрузилось приложение.
  2. Текущий каталог.
  3. Каталог системы Windows. Используйте функцию GetSystemDirectory, чтобы получить путь к этому каталогу.

    Windows NT/2000/XP: Имя этого каталога SYSTEM32.

  4. Windows NT/2000/XP: 16-разрядный каталог системы Windows. Нет никакой функции, которая извлекает путь к этому каталогу, но он ищется. Название этого каталога - SYSTEM.
  5. Каталог Windows. Используйте функцию GetWindowsDirectory, чтобы получить путь к этому каталогу.
  6. Каталоги, которые внесены в список переменной окружающей среды PATH.

Параметр 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

-

 Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz