ВУЗ:
Составители:
DWORD flProtect, // Защита отображаемого
// объекта.
DWORD dwMaxiniumSizeHigh, // Старшие 32 бита размера
// объекта.
DWORD dwMaximumSizeLow, // Младшие 32 бита размера
// объекта.
LPCTSTR IpHame // Имя объекта отображения
// файла.
);
может использоваться для задания имени отображения файла.
Предположим, создан объект File-mapping с именем MyFMO. Другой процесс может вызнать функцию
OpenFileMapping с этим именем в качестве последнего аргумента. Функция вернет зависимый от процесса дескриптор объ-
екта для использования во втором процессе. В виде альтернативы второй процесс может вызвать функцию
GreateFileMapping, используя имя объекта в качестве ее последнего аргумента. Система определит, что объект File-mapping с
таким именем уже существует и просто вернет его дескриптор. Здесь могут возникнуть проблемы, поскольку процесс счита-
ет, что он создает новый объект, тогда как в действительности он получает дескриптор существующего объекта. Програм-
мист должен сразу проверить возвращенное функцией CreateFileMapping значение, чтобы правильно сориентироваться в
ситуации.
API-функции, необходимые для отображения файла
При выполнении данной лабораторной работы необходимо изучить и использовать следующие API-функции:
1. Создание объекта FILE на базе существующего файла:
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDistribution,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
Рассмотрим параметры этой API- функции:
• lpFileName – имя открываемого файла;
• dwDesiredAccess – GENERIC_READ, чтобы разрешить чтение с устройства. GENERIC_WRITE, чтобы разрешить
запись на устройство (константы можно объединить). Ноль, чтобы разрешить только получение информации об устройстве;
• dwShareMode – 0 для запрета общего доступа, FILE_SHARE_READ и/или FILE_SHARE_WRITE для разрешения об-
щего доступа к файлу;
• lpSecurityAttributes – указатель на структуру, определяющую атрибуты безопасности файла (если они поддержива-
ются операционной системой);
• dwCreationDistribution – одна из следующих констант:
CREATE_NEW: создать файл. Если файл существует, происходит ошибка;
CREATE_ALWAYS: создать файл. Предыдущий файл перезаписывается;
OPEN_EXISTING: открываемый файл должен существовать (обязательно используется для устройств);
OPEN_ALWAYS: создать файл, если он не существует TRUNCATE_ EXISTING: существующий файл усекается до ну-
левой длины;
• dwFlagsAndAttributes Long – комбинация следующих констант:
FILE_ATTRIBUTE_ARCHIVE: установить архивный атрибут;
FILE__ATTRIBUTE_COMPRESSED: помечает файл как подлежащий сжатию или задает сжатие для файлов каталога
по умолчанию;
FILE_ATTRIBUTE_NORMAL: другие атрибуты файла не заданы;
FILE_ATTRJBUTE_HIDDEN: файл или каталог является скрытым;
FILE_ATTRIBUTE_READONLY: файл доступен только для чтения;
FILE_ATTRIBUTE_SYSTEM: файл является системным;
FILE_FLAG_WRITE_THROUGH: операционная система не откладывает операции записи в файл;
FILE_FLAG_OVERLAPPED: разрешить перекрывающиеся операции с файлом;
FILE_FLAG_NO_BUFFERING: запретить промежуточную буферизацию файла. Адреса буферов должны выравниваться
по границам секторов для текущего тома; FILE_FLAG_RANDOM_ACCESS: буферизация файла оптимизируется для произ-
вольного доступа;
FILE_FLAG_SEQUENTIAL_SCAN: буферизация файла оптимизируется для последовательного доступа;
FILE_FLAG_DELETE_ON_CL0SE: при закрытии последнего открытого дескриптора файл удаляется. Идеально подхо-
дит для временных файлов;
• hTemplateFile – если параметр не равен нулю, он содержит дескриптор файла, с которого будут скопированы расши-
ренные атрибуты нового файла. Возвращаемое значение – дескриптор файла в случае успеха. INVALID_HANDLE_VALUE
при ошибке. Устанавливает информацию GetLastError. Даже если функция завершилась успешно, но файл существовал и
был задан флаг CREATE_ALWAYS или OPEN_ALWAYS, GetLast-Error возвращает ERROR_ALREADY_EXISTS.
Страницы
- « первая
- ‹ предыдущая
- …
- 10
- 11
- 12
- 13
- 14
- …
- следующая ›
- последняя »