русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Работа с отображенным файлом


Дата добавления: 2013-12-23; просмотров: 3184; Нарушение авторских прав


Функция CreateFileMapping().

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

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

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

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

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

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

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

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

 

 

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);

 

Функция MapViewOfFile()

Вызов CreateFileMapping() не позволяет еще использовать отображаемые файлы. Эти функции только открывает отображаемый файл, но не позволяет получить указатель на область ”памяти” в этом файле. Для этого используется MapViewOfFile().

 

LPVOID MapViewOfFile(

HANDLE hFileObject, // объект возвращаемый функцией

// CreateFileMapping()

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

DWORD dwOffsetHigh, // старшие 32 разряда смещения в файле

DWORD dwOffsetLow, // младшие 32 разряда смещения в файле

DWORD dwNumberBytes); // количество отображаемых байт

 

Первый параметр – отображает объект, значение дескриптора которого возвращается функцией CreateFileMapping().

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

FILE_MAP_WRITE – доступ для чтения/записи;

FILE_MAP_READ – доступ только для чтения;

FILE_MAP_COPY – создание копии при записи.

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

Последний параметр – число отображаемых байт. Если нужно прочитать весь файл, то его значение равно NULL.

 

Пример:

LPVOID Data = MapViewOfFile( hMap, FILE_MAP_READ, 0, 0, 0);

 

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

 

И Н Т Е Р Ф Е Й С ГРАФИЧЕСКИХ УСТРОЙСТВ (GDI)

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

Таким образом, при использовании GDI не возникают проблемы, связанные с перенесением приложений на компьютеры с другими устройствами отображения, если эти устройства поддерживает Windows.

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

 



<== предыдущая лекция | следующая лекция ==>
Ввод - вывод данных посредством передачи сообщений | Получение индекса контекста устройства


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.