Функция 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_EXECUTE_READ, PAGE_WRITECOPYили защиты PAGE_READWRITE.
Когда процесс записывается на страницу копирования на запись, система копирует исходную страницу на новую страницу, которая является частной в процесс. Новая страница поддерживается файлом разбиения на страницы. Защита новой страницы изменяется от копирования и записи на чтение и запись. При указании доступа к копированию по записи плата за фиксацию системы и процесса выполняется для всего представления, так как вызывающий процесс может потенциально записывать на каждую страницу в представлении, делая все страницы закрытыми. Содержимое новой страницы никогда не записывается обратно в исходный файл и теряется при отмене сопоставления представления. |
|
Начиная с Windows 10 версии 1703, этот флаг указывает, что представление должно быть сопоставлено с помощью поддержки больших страниц. Размер представления должен быть кратным размером большой страницы, сообщаемой функцией GetLargePageMinimum, а объект сопоставления файлов должен быть создан с помощью параметра SEC_LARGE_PAGES. Если для lpBaseAddressзадано непустое значение, то значение должно быть несколько GetLargePageMinimum. |
|
Задает все расположения в сопоставленном файле в качестве недопустимых целевых объектов для Control Flow Guard (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] |
целевая платформа | Виндоус |
заголовка | memoryapi.h (включая Windows.h) |
библиотеки |
onecore.lib |
DLL | Kernel32.dll |