Crear una vista de archivo

Para asignar los datos de un archivo a la memoria virtual de un proceso, debe crear una vista del archivo. Las funciones MapViewOfFile y MapViewOfFileEx usan el identificador de objeto de asignación de archivos devuelto por CreateFileMapping para crear una vista del archivo o una parte del archivo en el espacio de direcciones virtuales del proceso. Estas funciones producen un error si las marcas de acceso entran en conflicto con las especificadas cuando CreateFileMapping creó el objeto de asignación de archivos.

La función MapViewOfFile devuelve un puntero a la vista de archivos. Al desreferenciar un puntero en el intervalo de direcciones especificadas en MapViewOfFile, una aplicación puede leer datos del archivo y escribir datos en el archivo. Escribir en la vista de archivos da como resultado cambios en el objeto de asignación de archivos. El sistema controla la escritura real en el archivo en el disco. Los datos no se transfieren realmente en el momento en que se escribe el objeto de asignación de archivos. En su lugar, gran parte de los archivos de entrada y salida (E/S) se almacenan en caché para mejorar el rendimiento general del sistema. Las aplicaciones pueden invalidar este comportamiento llamando a la función FlushViewOfFile para forzar al sistema a realizar transacciones de disco inmediatamente.

La función MapViewOfFileEx funciona exactamente igual que la función MapViewOfFile , salvo que permite que un proceso especifique la dirección base de la vista del archivo en el espacio de direcciones virtuales del proceso en el parámetro lpvBase . Si no hay suficiente espacio en la dirección especificada, se produce un error en la llamada. Por lo tanto, si debe asignar un archivo a la misma dirección en varios procesos, los procesos deben negociar una dirección adecuada: El parámetro lpvBase debe ser un múltiplo entero de la granularidad de asignación de memoria del sistema o se produce un error en la llamada. 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 .

Una aplicación puede crear varias vistas de archivo desde el mismo objeto de asignación de archivos. Una vista de archivo puede ser un tamaño diferente al objeto de asignación de archivos del que se deriva, pero debe ser menor que el objeto de asignación de archivos. El desplazamiento especificado por los parámetros dwOffsetHigh y dwOffsetLow de MapViewOfFile debe ser un múltiplo de la granularidad de asignación del sistema.

Crear una vista dentro de un archivo