Compartir a través de


Cerrar un objeto de asignación de archivos

Cuando un proceso haya terminado con el objeto de asignación de archivos, debe destruir todas las vistas de archivo en su espacio de direcciones mediante la función UnmapViewOfFile para cada vista de archivo.

Desasignar una vista asignada de un archivo invalida el intervalo ocupado por la vista en el espacio de direcciones del proceso y hace que el intervalo esté disponible para otras asignaciones. Quita la entrada del conjunto de trabajo para cada página virtual no asignada que formaba parte del conjunto de trabajo del proceso y reduce el tamaño del conjunto de trabajo del proceso. También disminuye el recuento de recursos compartidos de la página física correspondiente.

Las páginas modificadas de la vista no asignada no se escriben en el disco hasta que su recuento de recursos compartidos alcanza cero o, en otras palabras, hasta que no se asignan o recortan de los conjuntos de trabajo de todos los procesos que comparten las páginas. Incluso después, las páginas modificadas se escriben "diferir" en el disco; es decir, las modificaciones se pueden almacenar en caché en memoria y escribirse en el disco más adelante. Para minimizar el riesgo de pérdida de datos en caso de un error de alimentación o un bloqueo del sistema, las aplicaciones deben vaciar explícitamente las páginas modificadas mediante la función FlushViewOfFile .

Cuando cada proceso termine de usar el objeto de asignación de archivos y haya desasignado todas las vistas, debe cerrar el identificador del objeto de asignación de archivos y el archivo en el disco llamando a CloseHandle. Estas llamadas a CloseHandle se realizan correctamente incluso cuando hay vistas de archivo que todavía están abiertas. Sin embargo, dejar las vistas de archivo asignadas provoca pérdidas de memoria.