Программирование для Windows NT (том 2)



         

Создание отображения файла


Рассмотрим процедуру создания отображения файла на память.

Прежде всего, приложение должно открыть файл при помощи функции CreateFile, известной вам из предыдущего тома “Библиоткеи системного программиста”. Ниже мы привели прототип этой функции:

HANDLE CreateFile(

  LPCTSTR lpFileName,              // адрес строки имени файла

  DWORD   dwDesiredAccess,         // режим доступа

  DWORD   dwShareMode,// режим совместного использования файла

  LPSECURITY_ATTRIBUTES lpSecurityAttributes, // дескриптор

                                              // защиты

  DWORD  dwCreationDistribution,   // параметры создания

  DWORD  dwFlagsAndAttributes,     // атрибуты файла

  HANDLE hTemplateFile);   // идентификатор файла с атрибутами

Через параметр lpFileName вы, как обычно, должны передать этой функции адрес текстовой строки, содержащей путь к открываемому файлу.

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

Не забудьте также про параметр dwShareMode. Если файл будет использоваться одновременно несколькими процессами, через этот параметр необходимо передать режимы совместного использования файла: FILE_SHARE_READ или FILE_SHARE_WRITE.

Остальные параметры этой функции мы уже описали в предыдущем томе.

В случае успешного завершения, функция CreateFile возвращает идентификатор открытого файла. При ошибке возвращается значение INVALID_HANDLE_VALUE. Здесь все как обычно, пока никакого отображения еще не выполняется.

Для того чтобы создать отображение файла, вы должны вызвать функцию CreateFileMapping, прототип которой приведен ниже:

HANDLE CreateFileMapping(

  HANDLE hFile,           // идентификатор отображаемого файла




Содержание  Назад  Вперед