Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции -Процедурное программирование в Windows.doc
Скачиваний:
13
Добавлен:
13.09.2019
Размер:
742.91 Кб
Скачать

Функция WriteFile ( )

BOOL WriteFile ( HANDLE hFile, // дескриптор файла

LPCVOID lpBuffer, // данные, подлежащие выводу

DWORD NumberBytes , // число выводимых байт

LPDWORD lpBytesWritten, // число записанных байт

LPOVERLAPPED lpOverlapped ) ; // структура для

//перекрываемого

// ввода – вывода

Первый параметр hFile – дескриптор файла, который возвращен функцией

CreateFile().

Второй параметр – указатель на символьную строку, подлежащую выводу.

Третий параметр – число выводимых байт, т.е. .длина символьной строки.

Четвертый параметр – число выведенных байт.

Пятый параметр – должен быть задействован в асинхронном вводе - выводе при работе с каналами, коммуникационными устройствами и т.д.

В случае успешного выполнения функция WriteFile() возвращает значение TRUE.

Отображение файла в память

Отображение файла в память позволяет отображать память на жестком диске в адресное пространство приложения. Это означает, что байтами в файле можно манипулировать так, как если бы они находились в оперативной памяти.

Для отображения файла в память необходимо:

– создать или открыть файл функцией CreateFile(), которая возвращает дескриптор файла;

– отобразить файл в память функцией CreateFileMapping();

– закрыть файл функцией CloseHandle();

– получить указатель на другую область памяти, в которую отображен файл функцией MapViewOfFile();

– по окончании работы с файлом закрыть все используемые переменные функциями UnmapViewOfFile() и CloseHandle()

Функция CreateFileMapping().

HANDLE CreateFileMapping (

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

LPSECURITI_ATTRIBUTES pAttr, // необязательные атрибуты безопасности

DWORD flProtect, //защита для объекта отображения

DWORD dwMaxHigh, //старшие 32 бита размера объекта

DWORD dwMaxLow, // младшие 32 бита размера объекта

LPSTR lpName); //имя объекта отображения

Первый параметр содержит дескриптор файла, который требуется отобразить в память. Этот дескриптор может быть получен функцией CreateFile().

Второй обычно равен NULL для установления набора атрибутов безопасности по умолчанию.

Третий параметр может принимать один из следующих значений:

PAGE_READONLY – передаваемая часть файла доступна только для чтения;

PAGE_READWRITE – передаваемая часть файла доступна для чтения и

записи, при этом в функции CreateFile() должны использоваться параметры: GENERIC_READ и GENERIC_WRITE.

PAGE_WRITECOPY – доступен для записи и копирования, в CreateFile()

должны использоваться:

GENERIC_READ и GENERIC_WRITE.

Если четвертый и пятый параметры равны NULL, то в них автоматически помещается значение размера отображаемого файла.

Последний шестой параметр содержит имя объекта отображения. По этому имени разные процессы могут обращаться к этому файлу, что позволяет разделять память между приложениями. Если задания имени объекта не требуется, то значение параметра NULL.

Пример:

hMap = CreateFileMapping (hFile, NULL, PAGE_READONLY, 0, 0, NULL);