Création d’un affichage fichier

Pour mapper les données d’un fichier à la mémoire virtuelle d’un processus, vous devez créer une vue du fichier. Les fonctions MapViewOfFile et MapViewOfFileEx utilisent le handle de l’objet de mappage de fichiers retourné par CreateFileMapping pour créer une vue du fichier ou une partie du fichier dans l’espace d’adressage virtuel du processus. Ces fonctions échouent si les indicateurs d’accès entrent en conflit avec ceux spécifiés lorsque CreateFileMapping a créé l’objet de mappage de fichiers.

La fonction MapViewOfFile retourne un pointeur vers l’affichage de fichiers. En déréférencement d’un pointeur dans la plage d’adresses spécifiée dans MapViewOfFile, une application peut lire les données du fichier et écrire des données dans le fichier. L’écriture dans la vue de fichiers entraîne des modifications apportées à l’objet de mappage de fichiers. L’écriture réelle dans le fichier sur le disque est gérée par le système. Les données ne sont pas réellement transférées au moment où l’objet de mappage de fichiers est écrit. Au lieu de cela, une grande partie des entrées et sorties de fichier (E/S) est mise en cache pour améliorer les performances générales du système. Les applications peuvent remplacer ce comportement en appelant la fonction FlushViewOfFile pour forcer le système à effectuer immédiatement des transactions de disque.

La fonction MapViewOfFileEx fonctionne exactement comme la fonction MapViewOfFile , sauf qu’elle permet à un processus de spécifier l’adresse de base de la vue du fichier dans l’espace d’adressage virtuel du processus dans le paramètre lpvBase . S’il n’y a pas suffisamment d’espace à l’adresse spécifiée, l’appel échoue. Par conséquent, si vous devez mapper un fichier à la même adresse dans plusieurs processus, les processus doivent négocier une adresse appropriée : le paramètre lpvBase doit être un multiple intégral de la granularité de l’allocation de mémoire système ou l’appel échoue. Pour obtenir la granularité de l’allocation de mémoire du système, utilisez la fonction GetSystemInfo , qui remplit les membres d’une structure SYSTEM_INFO .

Une application peut créer plusieurs vues de fichiers à partir du même objet de mappage de fichiers. Une vue de fichiers peut avoir une taille différente de l’objet de mappage de fichiers dont elle est dérivée, mais elle doit être plus petite que l’objet de mappage de fichiers. Le décalage spécifié par les paramètres dwOffsetHigh et dwOffsetLow de MapViewOfFile doit être un multiple de la granularité d’allocation du système.

Création d’une vue dans un fichier