Share via


Función MapViewOfFileFromApp (memoryapi.h)

Asigna una vista de una asignación de archivos al espacio de direcciones de una aplicación de la Tienda Windows que llama.

Sintaxis

PVOID MapViewOfFileFromApp(
  [in] HANDLE  hFileMappingObject,
  [in] ULONG   DesiredAccess,
  [in] ULONG64 FileOffset,
  [in] SIZE_T  NumberOfBytesToMap
);

Parámetros

[in] hFileMappingObject

Identificador de un objeto de asignación de archivos. La función CreateFileMappingFromApp devuelve este identificador.

[in] DesiredAccess

Tipo de acceso a un objeto de asignación de archivos, que determina la protección de páginas de las páginas. Este parámetro puede ser uno de los valores siguientes o una combinación OR bit a bit de varios valores cuando corresponda.

Valor Significado
FILE_MAP_ALL_ACCESS
Se asigna una vista de lectura y escritura del archivo. El objeto de asignación de archivos debe haberse creado con PAGE_READWRITE protección.

Cuando se usa con MapViewOfFileFromApp, FILE_MAP_ALL_ACCESS equivale a FILE_MAP_WRITE.

FILE_MAP_READ
Se asigna una vista de solo lectura del archivo. Un intento de escribir en la vista de archivos produce una infracción de acceso.

El objeto de asignación de archivos debe haberse creado con PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE_READ o protección de PAGE_EXECUTE_READWRITE .

FILE_MAP_WRITE
Se asigna una vista de lectura y escritura del archivo. El objeto de asignación de archivos debe haberse creado con PAGE_READWRITE protección.

Cuando se usa con MapViewOfFileFromApp, (FILE_MAP_WRITE | FILE_MAP_READ) equivale a FILE_MAP_WRITE.

 

Con OR bit a bit, puede combinar los valores anteriores con estos valores.

Valor Significado
FILE_MAP_COPY
Se asigna una vista de copia en escritura del archivo. El objeto de asignación de archivos debe haberse creado con PAGE_READONLY, PAGE_READ_EXECUTE, PAGE_WRITECOPY o protección de PAGE_READWRITE .

Cuando un proceso escribe en una página de copia en escritura, el sistema copia la página original en una página nueva privada para el proceso. El archivo de paginación respalda la nueva página. La protección de la nueva página cambia de copiar en escritura a lectura y escritura.

Cuando se especifica el acceso de copia en escritura, el sistema y el cargo de confirmación del proceso tomados son para toda la vista, ya que el proceso de llamada puede escribir potencialmente en cada página de la vista, lo que hace que todas las páginas sean privadas. El contenido de la nueva página nunca se vuelve a escribir en el archivo original y se pierde cuando la vista no está asignada.

FILE_MAP_LARGE_PAGES
A partir de Windows 10, versión 1703, esta marca especifica que la vista debe asignarse con compatibilidad con páginas grandes. El tamaño de la vista debe ser un múltiplo del tamaño de una página grande notificada por la función GetLargePageMinimum y el objeto de asignación de archivos debe haberse creado con la opción SEC_LARGE_PAGES . Si proporciona un valor distinto de NULL para lpBaseAddress, el valor debe ser un múltiplo de GetLargePageMinimum.
FILE_MAP_TARGETS_INVALID
Establece todas las ubicaciones del archivo asignado como destinos no válidos para Control Flow Guard (CFG). Esta marca es similar a PAGE_TARGETS_INVALID. Use esta marca en combinación con el FILE_MAP_EXECUTE de acceso de ejecución. Cualquier llamada indirecta a ubicaciones de esas páginas producirá un error en las comprobaciones de CFG y el proceso se finalizará. El comportamiento predeterminado de las páginas ejecutables asignadas es marcar los destinos de llamada válidos para CFG.
 

En el caso de los objetos de asignación de archivos creados con el atributo SEC_IMAGE , el parámetro dwDesiredAccess no tiene ningún efecto y debe establecerse en cualquier valor válido, como FILE_MAP_READ.

Para obtener más información sobre el acceso a objetos de asignación de archivos, vea Seguridad de asignación de archivos y derechos de acceso.

[in] FileOffset

Desplazamiento del archivo donde se va a comenzar la vista. El desplazamiento debe especificar un desplazamiento dentro de la asignación de archivos. También deben coincidir con la granularidad de asignación de memoria del sistema. Es decir, el desplazamiento debe ser un múltiplo de la granularidad de asignación. Para obtener la granularidad de asignación de memoria del sistema, use la función GetSystemInfo , que rellena los miembros de una estructura de SYSTEM_INFO .

[in] NumberOfBytesToMap

Número de bytes de una asignación de archivos que se va a asignar a la vista. Todos los bytes deben estar dentro del tamaño máximo especificado por CreateFileMappingFromApp. Si este parámetro es 0 (cero), la asignación se extiende desde el desplazamiento especificado hasta el final de la asignación de archivos.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es la dirección inicial de la vista asignada.

Si la función no se realiza correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Con una excepción importante, las vistas de archivo derivadas de cualquier objeto de asignación de archivos respaldado por el mismo archivo son coherentes o idénticos en un momento específico. La coherencia se garantiza para las vistas dentro de un proceso y para las vistas asignadas por diferentes procesos.

La excepción está relacionada con los archivos remotos. Aunque MapViewOfFileFromApp funciona con archivos remotos, no los mantiene coherentes. Por ejemplo, si dos equipos asignan un archivo como grabable y ambos cambian la misma página, cada equipo solo ve sus propias escrituras en la página. Cuando los datos se actualizan en el disco, no se combina.

Solo puedes solicitar correctamente la protección ejecutable si la aplicación tiene la funcionalidad codeGeneration .

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado memoryapi.h (incluya Windows.h)
Library onecore.lib
Archivo DLL Kernel32.dll

Vea también

CreateFileMapping

Crear una vista de archivo

DuplicateHandle

Getsysteminfo

MapViewOfFile

MapViewOfFileEx

Funciones de administración de memoria

OpenFileMapping

SYSTEM_INFO

UnmapViewOfFile