Основы программирования в Win32API. Марапулец Ю.В. - 61 стр.

UptoLike

Составители: 

Флаг Значение
FILE_FLAG_BACK-
UP_SEMANTICS
Указывает на то, что файл предназначен для операций ре-
зервного копирования или восстановления из резервной копии.
Операционная система разрешает вызывающему процессу лю-
бой доступ к файлу при условии, что вызывающий процесс об-
ладает привилегиями SE_BACKUP_NAME
и SE_RESTORE_NAME
FILE_FLAG_POSIX-
_SEMANTICS
Доступ к файлу осуществляется в соответствии с правила-
ми POSIX. При этом разрешается использовать несколько раз-
личных файлов, имена которых отличаются только регистром
букв. Такие файлы разрешается создавать только в системах,
поддерживающих подобную схему именования файлов. Этот
флаг следует использовать с большой осторожностью, так как
файлы, созданные с его использованием, могут оказаться не-
доступными для приложений DOS и Windows
FILE_FLAG_OPEN-
_REPARSE_POINT
Подавляет поведение, свойственное для точек грамматиче-
ского разбора (reparse points) файловой системы NTFS. Когда
файл открывается, вызывающему процессу возвращается его
дескриптор вне зависимости от того, работоспособен ли
фильтр, контролирующий точку грамматического разбора, или
нет. Этот флаг не может использоваться совместно
с флагом CREATE_ALWAYS
FILE_FLAG_OPEN-
_NO_RECALL
Информирует систему о том, что вызывающее приложение
запрашивает данные, хранящиеся в файле, однако файл может
продолжать оставаться на удаленном носителе данных. Этот
флаг используется удаленными системами хранения данных
или совместно с системой Hierarchical Storage Management
Еще одной особенностью функции CreateFile() является обслуживание
сменных носителей информации. Если носитель данных в нужный момент не-
доступен (гибкий диск вытащили из дисковода), операционная система выве-
дет на экран диалоговое окно с сообщением об ошибке. Если вы хотите избе-
жать этого (обычно, убедившись в отсутствии гибкого диска, приложение
принимает меры самостоятельно), необходимо обратиться к функции SetEr-
rorMode() и передать ей в качестве параметра флаг
SEM_FAILCRITICALERRORS. В этом случае при отсутствии гибкого диска
в дисководе система не будет отображать на экране каких-либо сообщений об
ошибках.
Обладая дескриптором файла, можно выполнить чтение или запись данных
при помощи функций ReadFile() и WriteFile() соответственно. Эти функции ра-
ботают стандартным образом: в качестве параметров они принимают дескриптор
файла, указатель на буфер, длину буфера и указатель на переменную, в которой
будет сохранено количество прочитанных или записанных байт. Если использу-
ется перекрывающийся ввод/вывод, в качестве одного из аргументов необходимо
передать указатель на структуру OVERLAPPED. Для обычных файлов указатель
на эту структуру всегда равен NULL:
BOOL ReadFile
61
      Флаг                                       Значение
                        Указывает на то, что файл предназначен для операций ре-
                      зервного копирования или восстановления из резервной копии.
  FILE_FLAG_BACK-     Операционная система разрешает вызывающему процессу лю-
   UP_SEMANTICS       бой доступ к файлу при условии, что вызывающий процесс об-
                      ладает           привилегиями             SE_BACKUP_NAME
                      и SE_RESTORE_NAME
                          Доступ к файлу осуществляется в соответствии с правила-
                      ми POSIX. При этом разрешается использовать несколько раз-
                      личных файлов, имена которых отличаются только регистром
  FILE_FLAG_POSIX-    букв. Такие файлы разрешается создавать только в системах,
     _SEMANTICS       поддерживающих подобную схему именования файлов. Этот
                      флаг следует использовать с большой осторожностью, так как
                      файлы, созданные с его использованием, могут оказаться не-
                      доступными для приложений DOS и Windows
                          Подавляет поведение, свойственное для точек грамматиче-
                      ского разбора (reparse points) файловой системы NTFS. Когда
                      файл открывается, вызывающему процессу возвращается его
  FILE_FLAG_OPEN-
                      дескриптор вне зависимости от того, работоспособен ли
  _REPARSE_POINT
                      фильтр, контролирующий точку грамматического разбора, или
                      нет. Этот флаг не может использоваться совместно
                      с флагом CREATE_ALWAYS
                          Информирует систему о том, что вызывающее приложение
                      запрашивает данные, хранящиеся в файле, однако файл может
  FILE_FLAG_OPEN-
                      продолжать оставаться на удаленном носителе данных. Этот
    _NO_RECALL
                      флаг используется удаленными системами хранения данных
                      или совместно с системой Hierarchical Storage Management

     Еще одной особенностью функции CreateFile() является обслуживание
сменных носителей информации. Если носитель данных в нужный момент не-
доступен (гибкий диск вытащили из дисковода), операционная система выве-
дет на экран диалоговое окно с сообщением об ошибке. Если вы хотите избе-
жать этого (обычно, убедившись в отсутствии гибкого диска, приложение
принимает меры самостоятельно), необходимо обратиться к функции SetEr-
rorMode()     и      передать    ей    в     качестве     параметра     флаг
SEM_FAILCRITICALERRORS. В этом случае при отсутствии гибкого диска
в дисководе система не будет отображать на экране каких-либо сообщений об
ошибках.
     Обладая дескриптором файла, можно выполнить чтение или запись данных
при помощи функций ReadFile() и WriteFile() соответственно. Эти функции ра-
ботают стандартным образом: в качестве параметров они принимают дескриптор
файла, указатель на буфер, длину буфера и указатель на переменную, в которой
будет сохранено количество прочитанных или записанных байт. Если использу-
ется перекрывающийся ввод/вывод, в качестве одного из аргументов необходимо
передать указатель на структуру OVERLAPPED. Для обычных файлов указатель
на эту структуру всегда равен NULL:
BOOL ReadFile

                                      61