Составители:
Основные функции для проецирования файлов. Для создания объекта ядра
“файл” используется функция CreateFile(). Эта функция, аналогичная функции open() из
CRT-библиотеки. Более подробно она будет рассмотрена в следующей главе. Функцией
CreateFileMapping() создается объект ядра “проецируемый файл”.
HANDLE CreateFileMapping( HANDLE hFile, // дескриптор файла,
// открытого функцией CreateFile()
LPSECURITY_ATTRIBUTES lpAttributes,// структура SECURITY_ATTRIBUTES
DWORD fdwProtect, // нет доступа, только чтение
// или чтение/запись
DWORD dwMaximumSizeHigh, // максимальный размер проецируемого
// файла в верхнем разряде DWORD
DWORD dwMaximumSizeLow, // максимальный размер проецируемого
// файла в нижнем разряде DWORD
// если оба параметра равны 0, максимальный размер равен размеру файла
LPCTSTR lpName ); // имя проецируемого файла,
// если NULL - то без имени
Если файл был создан ранее, то он может быть открыт функцией OpenFileMapping().
HANDLE OpenFileMapping( DWORD dwDesiredAccess, // режим доступа к
//отображаемому объекту
BOOL bInheritHandle, // флаг наследования дескрипторов
LPCTSTR lpName ); // имя открываемого проецируемого файла
Для отображения “проецируемого файла” или его части на адресное пространство
процесса применяется функция MapViewOfFile(), для открепления - UnmapViewOfFile().
LPVOID MapViewOfFile( HANDLE hFileMappingObject, // дескриптор
// проецируемого файла
DWORD dwDesiredAccess, // режим доступа к отображаемому объекту
DWORD dwFileOffsetHigh, // смещение для начала отображения файла
// в верхнем разряде DWORD
DWORD dwFileOffsetLow, // смещение для начала отображения файла
// в нижнем разряде DWORD
// Комбинация высоких и низких смещений должна определить смещение в
// пределах файла, которое соответствует степени детализации распределения
// памяти в системе
SIZE_T dwNumberOfBytesToMap ); // количество байтов файла для отображения
BOOL UnmapViewOfFile (LPCVOID lpBaseAddress ); //указатель на базовый адрес,
// возвращается функцией MapViewOfFile()
Проецирование файла в память выполняется в три этапа:
1. Создается объект ядра “файл” с помощью функции CreateFile().
2. С помощью функции CreateFileMapping() создается объект ядра “проецируемый
файл”. При этом используется описатель файла (handle), возвращенный функцией
CreateFile(). Теперь файл готов к проецированию.
3. Производится отображение объекта “проецируемый файл” или его части на адресное
пространство процесса. Для этого применяется функция MapViewOfFile().
117
Основные функции для проецирования файлов. Для создания объекта ядра
“файл” используется функция CreateFile(). Эта функция, аналогичная функции open() из
CRT-библиотеки. Более подробно она будет рассмотрена в следующей главе. Функцией
CreateFileMapping() создается объект ядра “проецируемый файл”.
HANDLE CreateFileMapping( HANDLE hFile, // дескриптор файла,
// открытого функцией CreateFile()
LPSECURITY_ATTRIBUTES lpAttributes,// структура SECURITY_ATTRIBUTES
DWORD fdwProtect, // нет доступа, только чтение
// или чтение/запись
DWORD dwMaximumSizeHigh, // максимальный размер проецируемого
// файла в верхнем разряде DWORD
DWORD dwMaximumSizeLow, // максимальный размер проецируемого
// файла в нижнем разряде DWORD
// если оба параметра равны 0, максимальный размер равен размеру файла
LPCTSTR lpName ); // имя проецируемого файла,
// если NULL - то без имени
Если файл был создан ранее, то он может быть открыт функцией OpenFileMapping().
HANDLE OpenFileMapping( DWORD dwDesiredAccess, // режим доступа к
//отображаемому объекту
BOOL bInheritHandle, // флаг наследования дескрипторов
LPCTSTR lpName ); // имя открываемого проецируемого файла
Для отображения “проецируемого файла” или его части на адресное пространство
процесса применяется функция MapViewOfFile(), для открепления - UnmapViewOfFile().
LPVOID MapViewOfFile( HANDLE hFileMappingObject, // дескриптор
// проецируемого файла
DWORD dwDesiredAccess, // режим доступа к отображаемому объекту
DWORD dwFileOffsetHigh, // смещение для начала отображения файла
// в верхнем разряде DWORD
DWORD dwFileOffsetLow, // смещение для начала отображения файла
// в нижнем разряде DWORD
// Комбинация высоких и низких смещений должна определить смещение в
// пределах файла, которое соответствует степени детализации распределения
// памяти в системе
SIZE_T dwNumberOfBytesToMap ); // количество байтов файла для отображения
BOOL UnmapViewOfFile (LPCVOID lpBaseAddress ); //указатель на базовый адрес,
// возвращается функцией MapViewOfFile()
Проецирование файла в память выполняется в три этапа:
1. Создается объект ядра “файл” с помощью функции CreateFile().
2. С помощью функции CreateFileMapping() создается объект ядра “проецируемый
файл”. При этом используется описатель файла (handle), возвращенный функцией
CreateFile(). Теперь файл готов к проецированию.
3. Производится отображение объекта “проецируемый файл” или его части на адресное
пространство процесса. Для этого применяется функция MapViewOfFile().
117
Страницы
- « первая
- ‹ предыдущая
- …
- 113
- 114
- 115
- 116
- 117
- …
- следующая ›
- последняя »
