Partager via


MapViewOfFileFromApp, fonction (memoryapi.h)

Mappe une vue d’un mappage de fichiers dans l’espace d’adressage d’une application du Windows Store appelante.

Syntaxe

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

Paramètres

[in] hFileMappingObject

Handle vers un objet de mappage de fichiers. La fonction CreateFileMappingFromApp retourne ce handle.

[in] DesiredAccess

Type d’accès à un objet de mappage de fichiers, qui détermine la protection des pages. Ce paramètre peut être l’une des valeurs suivantes, ou une combinaison de plusieurs valeurs au niveau du bit OU, le cas échéant.

Valeur Signification
FILE_MAP_ALL_ACCESS
Une vue en lecture/écriture du fichier est mappée. L’objet de mappage de fichiers doit avoir été créé avec PAGE_READWRITE protection.

Lorsqu’il est utilisé avec MapViewOfFileFromApp, FILE_MAP_ALL_ACCESS équivaut à FILE_MAP_WRITE.

FILE_MAP_READ
Une vue en lecture seule du fichier est mappée. Une tentative d’écriture dans la vue fichier entraîne une violation d’accès.

L’objet de mappage de fichiers doit avoir été créé avec une protection PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE_READ ou PAGE_EXECUTE_READWRITE .

FILE_MAP_WRITE
Une vue en lecture/écriture du fichier est mappée. L’objet de mappage de fichiers doit avoir été créé avec PAGE_READWRITE protection.

Lorsqu’il est utilisé avec MapViewOfFileFromApp, (FILE_MAP_WRITE | FILE_MAP_READ) équivaut à FILE_MAP_WRITE.

 

À l’aide du bit OR, vous pouvez combiner les valeurs ci-dessus avec ces valeurs.

Valeur Signification
FILE_MAP_COPY
Une vue de copie en écriture du fichier est mappée. L’objet de mappage de fichiers doit avoir été créé avec une protection PAGE_READONLY, PAGE_READ_EXECUTE, PAGE_WRITECOPY ou PAGE_READWRITE .

Lorsqu’un processus écrit dans une page de copie sur écriture, le système copie la page d’origine vers une nouvelle page privée au processus. La nouvelle page est sauvegardée par le fichier de pagination. La protection de la nouvelle page passe de la copie en écriture à la lecture/écriture.

Lorsque l’accès de copie en écriture est spécifié, les frais de validation du système et du processus pris concernent l’ensemble de l’affichage, car le processus appelant peut potentiellement écrire dans chaque page de l’affichage, ce qui rend toutes les pages privées. Le contenu de la nouvelle page n’est jamais réécrit dans le fichier d’origine et est perdu lorsque la vue n’est pas mappée.

FILE_MAP_LARGE_PAGES
À compter de Windows 10, version 1703, cet indicateur spécifie que la vue doit être mappée à l’aide de la prise en charge des pages volumineuses. La taille de l’affichage doit être un multiple de la taille d’une grande page signalée par la fonction GetLargePageMinimum , et l’objet de mappage de fichiers doit avoir été créé à l’aide de l’option SEC_LARGE_PAGES . Si vous fournissez une valeur non null pour lpBaseAddress, la valeur doit être un multiple de GetLargePageMinimum.
FILE_MAP_TARGETS_INVALID
Définit tous les emplacements du fichier mappé en tant que cibles non valides pour Control Flow Guard (CFG). Cet indicateur est similaire à PAGE_TARGETS_INVALID. Utilisez cet indicateur en combinaison avec le droit d’accès d’exécution FILE_MAP_EXECUTE. Tout appel indirect à des emplacements dans ces pages échoue aux vérifications CFG et le processus est arrêté. Le comportement par défaut pour les pages exécutables allouées est d’être marqué comme cibles d’appel valides pour CFG.
 

Pour les objets de mappage de fichiers créés avec l’attribut SEC_IMAGE , le paramètre dwDesiredAccess n’a aucun effet et doit être défini sur une valeur valide telle que FILE_MAP_READ.

Pour plus d’informations sur l’accès aux objets de mappage de fichiers, consultez Sécurité et droits d’accès du mappage de fichiers.

[in] FileOffset

Décalage de fichier où la vue doit commencer. Le décalage doit spécifier un décalage dans le mappage de fichiers. Ils doivent également correspondre à la granularité d’allocation de mémoire du système. Autrement dit, le décalage doit être un multiple de la granularité d’allocation. Pour obtenir la granularité d’allocation de mémoire du système, utilisez la fonction GetSystemInfo , qui remplit les membres d’une structure SYSTEM_INFO .

[in] NumberOfBytesToMap

Nombre d’octets d’un mappage de fichier à mapper à la vue. Tous les octets doivent être dans la taille maximale spécifiée par CreateFileMappingFromApp. Si ce paramètre est égal à 0 (zéro), le mappage s’étend du décalage spécifié jusqu’à la fin du mappage de fichiers.

Valeur retournée

Si la fonction réussit, la valeur de retour est l’adresse de départ de la vue mappée.

Si la fonction échoue, la valeur de retour est NULL. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

À une exception importante, les vues de fichiers dérivées de n’importe quel objet de mappage de fichiers qui est adossé au même fichier sont cohérentes ou identiques à un moment spécifique. La cohérence est garantie pour les vues au sein d’un processus et pour les vues qui sont mappées par différents processus.

L’exception est liée aux fichiers distants. Bien que MapViewOfFileFromApp fonctionne avec les fichiers distants, il ne les maintient pas cohérents. Par exemple, si deux ordinateurs mappent un fichier en tant que fichier accessible en écriture et modifient tous les deux la même page, chaque ordinateur ne voit que ses propres écritures dans la page. Lorsque les données sont mises à jour sur le disque, elles ne sont pas fusionnées.

Vous ne pouvez demander une protection exécutable que si votre application dispose de la fonctionnalité codeGeneration .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête memoryapi.h (inclure Windows.h)
Bibliothèque onecore.lib
DLL Kernel32.dll

Voir aussi

CreateFileMapping

Création d’un affichage de fichiers

DuplicateHandle

GetSystemInfo

MapViewOfFile

MapViewOfFileEx

Fonctions de gestion de la mémoire

OpenFileMapping

SYSTEM_INFO

UnmapViewOfFile