Функция MapViewOfFileFromApp (memoryapi.h)
Сопоставляет представление сопоставления файлов с адресным пространством вызывающего приложения Магазина Windows.
Синтаксис
PVOID MapViewOfFileFromApp(
[in] HANDLE hFileMappingObject,
[in] ULONG DesiredAccess,
[in] ULONG64 FileOffset,
[in] SIZE_T NumberOfBytesToMap
);
Параметры
[in] hFileMappingObject
Дескриптор для объекта сопоставления файлов. Функция CreateFileMappingFromApp возвращает этот дескриптор.
[in] DesiredAccess
Тип доступа к объекту сопоставления файлов, который определяет защиту страниц страниц. Этот параметр может быть одним из следующих значений или побитовой комбинацией или нескольких значений, если это уместно.
С помощью побитового ИЛИ можно объединить приведенные выше значения с этими значениями.
Значение | Значение |
---|---|
|
Сопоставляется представление копирования при записи файла. Объект сопоставления файлов должен быть создан с защитой PAGE_READONLY, PAGE_READ_EXECUTE, PAGE_WRITECOPY или PAGE_READWRITE .
Когда процесс выполняет запись на страницу копирования при записи, система копирует исходную страницу на новую страницу, которая является закрытой для процесса. Новая страница поддерживается файлом подкачки. Защита новой страницы изменяется с копирования при записи на чтение и запись. При указании доступа к копированию при записи взимается плата за фиксацию системы и процесса для всего представления, так как вызывающий процесс потенциально может выполнять запись на каждую страницу представления, делая все страницы закрытыми. Содержимое новой страницы никогда не записывается обратно в исходный файл и теряется при несопоставлении представления. |
|
Начиная с Windows 10 версии 1703, этот флаг указывает, что представление должно быть сопоставлено с помощью поддержки больших страниц. Размер представления должен быть кратным размеру большой страницы, сообщаемой функцией GetLargePageMinimum , а объект сопоставления файлов должен быть создан с помощью параметра SEC_LARGE_PAGES . Если для lpBaseAddress указано значение, отличное от NULL, значение должно быть кратным GetLargePageMinimum. |
|
Устанавливает все расположения в сопоставленном файле как недопустимые целевые объекты для защиты потока управления (CFG). Этот флаг похож на PAGE_TARGETS_INVALID. Используйте этот флаг в сочетании с FILE_MAP_EXECUTE права доступа на выполнение. Любой непрямый вызов расположений на этих страницах завершится проверкой CFG, и процесс будет завершен. По умолчанию для выделенных исполняемых страниц помечается допустимые целевые объекты вызова для CFG. |
Для объектов сопоставления файлов, созданных с помощью атрибута SEC_IMAGE, параметр dwDesiredAccess не действует и должен иметь любое допустимое значение, например FILE_MAP_READ.
Дополнительные сведения о доступе к объектам сопоставления файлов см. в разделе Безопасность сопоставления файлов и права доступа.
[in] FileOffset
Смещение файла, с которого начинается представление. Смещение должно указывать смещение в сопоставлении файлов. Они также должны соответствовать степени детализации выделения памяти в системе. То есть смещение должно быть кратно степени детализации выделения. Чтобы получить степень детализации выделения памяти в системе, используйте функцию GetSystemInfo , которая заполняет элементы структуры SYSTEM_INFO .
[in] NumberOfBytesToMap
Число байтов сопоставления файлов для сопоставления с представлением. Все байты должны быть в пределах максимального размера, заданного параметром CreateFileMappingFromApp. Если этот параметр равен 0 (ноль), сопоставление распространяется от указанного смещения до конца сопоставления файлов.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение является начальным адресом сопоставленного представления.
Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
За одним важным исключением, представления файлов, производные от любого объекта сопоставления файлов, который поддерживается одним и тем же файлом, являются согласованными или идентичными в определенный момент времени. Когерентность гарантируется для представлений в рамках процесса и представлений, сопоставленных различными процессами.
Исключение связано с удаленными файлами. Хотя MapViewOfFileFromApp работает с удаленными файлами, он не поддерживает их согласованность. Например, если два компьютера сопоставляют файл как доступный для записи и изменяют одну и ту же страницу, каждый компьютер видит только собственные записи на страницу. При обновлении данных на диске они не объединяются.
Вы можете успешно запросить защиту исполняемого файла, только если ваше приложение имеет возможность codeGeneration .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | memoryapi.h (включая Windows.h) |
Библиотека | onecore.lib |
DLL | Kernel32.dll |