Программное обеспечение САПР. Операционные системы. Майстренко Н.В - 13 стр.

UptoLike

2. Создание объекта файлового отображения File-mapping:
HANDLE CreateFileMapping(
HANDLE hFile,
LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
DWORD flProtect,
DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow,
LPCTSTR lpName
);
Рассмотрим параметры этой API- функции:
hFile – дескриптор файла, для которого создается отображение;
lpFileMappingAttributes – SECUR1TY_ATTRIBLITES объект безопасности, используемый при создании файлового
отображения. NULL для использования стандартных атрибутов безопасности;
flProtect – одна из следующих констант:
PAGE_READONLY: созданное файловое отображение доступно только для чтения;
PAGE_READWRITE: файловое отображение доступно для чтения и записи;
PAGE_WRITECQPY: разрешается копирование при записи; также в комбинацию могут включаться следующие кон-
станты: SЕС_СОММГГ: для страниц секции выделяется физическое место в памяти или файле подкачки;
SEC_IMAGE: файл является исполняемым;
SEC_RESERVE: для страниц секции резервируется виртуальная память без фактического выделения.
dwMaximumSizeHigh – максимальный размер файлового отображения (старшие 32 бита);
dwMaximumSizeLow – максимальный размер файлового отображения (младшие 32 бита); Если параметры dwMaxi-
mumSizeHigh и dwMaximumSizeLow одновременно равны нулю, используется фактический размер файла на диске;
lpName – имя объекта файлового отображения. Если файловое отображение с заданным именем уже существует,
функция открывает его.
Возвращаемое значениедескриптор созданного объекта файлового отображения. Ноль в случае ошибки. Устанавли-
вает информацию GetLast-Error. Даже если функция завершилась успешно, но возвращенный манипулятор принадлежит
существующему объекту фазового отображения, GetLastError возвращает ERROR_ALREADY_EXISTS. В этом случае раз-
мер файлового отображении определяется размером существующего объекта, а не параметрами функции.
3. Функция отображает объект файлового отображения в адресное пространство текущего процесса:
LPVOID MapViewOfFile(
HANDLE hFileMappingObject,
DWORD dwDesiredAccess,
DWORD dwFileOffsetHigh,
DWORD dwFileOffsetLow,
DWORD dwNumberOfBytesToMap
);
Рассмотрим параметры этой API- функции:
hFileMappingObject – дескриптор объекта файлового отображения;
dwDesiredAccess – одна из следующих констант:
FILE_MAP_WRITE: отображение доступно для чтения и записи. Объект файлового отображения должен быть создан с
флагом PAGE_READWRITE;
FILE_MAP_READ: отображение доступно только для чтения. Объект файлового отображения должен быть создан с
флагом PAGE_READ или
PAGE_READWRITE; FILE_MAP_ALL_ACCESS: то же, что FILE_MAP_WRITE
HLE_MAP_COPY: ко-
пирование при записи. В Windows 95 Обьект файлового отображения должен быть создан c флагом PAGE_WRITECOPY;
dwFileOffsetHigh – старшие 32 бита смещения в файле, с которого начинается отображение;
dwFileOffsetLow – младшие 32 бита смещения в файле, с которого начинается отображение;
dwNumberOfBytesToMap – количество отображаемых байт в файле. Ноль, чтобы использовать весь объект файлово-
го отображения.
Возвращаемое значениеначальный адрес отображения в памяти. Ноль при ошибке. Устанавливает информацию
GetLastError.
Комментарии: dwOffsetLow и dwOffsetHigh должны содержать смещение с учетом гранулярности выделения памяти в
системе. Другими словами, если гранулярность памяти в системе равна 64 Кбайт (выделяемые блоки выравниваются по гра-
нице 64 Кбайт), значение должно быть кратно 64 Кбайт. Чтобы получить гранулярность выделения памяти в системе, вос-
пользуйтесь функцией GetSystemlnfo. В большинстве приложений передается ноль, чтобы отображение начиналось с начала
файла. Параметр IpBaseAddress также должен быть кратен значению гранулярности.
4. Функция закрывает объект ядра. К числу объектов ядра относятся объекты файлов, файловых отображений, процес-
сов, потоков, безопасности и синхронизации:
BOOL CloseHandle(
HANDLE hObject // Дескриптор закрываемого объекта.
);