MapViewOfFileFromApp, fonction (memoryapi.h)
Mappe une vue d’un mappage de fichiers dans l’espace d’adressage d’une application windows Store appelante.
Syntaxe
PVOID MapViewOfFileFromApp(
[in] HANDLE hFileMappingObject,
[in] ULONG DesiredAccess,
[in] ULONG64 FileOffset,
[in] SIZE_T NumberOfBytesToMap
);
Paramètres
[in] hFileMappingObject
Handle d’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 OR au niveau du bit de plusieurs valeurs, le cas échéant.
À l’aide d’or au niveau du bit, vous pouvez combiner les valeurs ci-dessus avec ces valeurs.
Valeur | Signification |
---|---|
|
Une vue de copie en écriture du fichier est mappée. L’objet de mappage de fichiers doit avoir été créé avec PAGE_READONLY, PAGE_EXECUTE_READ, PAGE_WRITECOPYou PAGE_READWRITE protection.
Lorsqu’un processus écrit dans une page de copie en écriture, le système copie la page d’origine vers une nouvelle page privée dans le processus. La nouvelle page est sauvegardée par le fichier de pagination. Protection des modifications apportées à la nouvelle page de la copie en écriture en lecture-écriture. Lorsque l’accès en copie en écriture est spécifié, le système et le processus sont facturés pour 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. |
|
À compter de Windows 10, version 1703, cet indicateur spécifie que la vue doit être mappée à l’aide de prise en charge des grandes pages. La taille de la vue 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. |
|
Définit tous les emplacements du fichier mappé comme 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 échouera les vérifications CFG et le processus sera arrêté. Le comportement par défaut des pages exécutables allouées doit ê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 n’importe quelle valeur valide telle que FILE_MAP_READ.
Pour plus d’informations sur l’accès aux objets de mappage de fichiers, consultez sécurité de mappage de fichiers et droits d’accès.
[in] FileOffset
Décalage de fichier où l’affichage 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 se trouver 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é à la fin du mappage de fichiers.
Valeur de retour
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’erreur étendues, appelez GetLastError.
Remarques
À une exception importante, les vues de fichiers dérivées d’un objet de mappage de fichiers soutenu par le 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 mappées par différents processus.
L’exception est liée aux fichiers distants. Bien que MapViewOfFileFromApp fonctionne avec des fichiers distants, il ne les maintient pas cohérents. Par exemple, si deux ordinateurs mappent un fichier en écriture et modifient 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é de codeGeneration
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 8 [applications de bureau | Applications UWP] |
serveur minimum pris en charge | Windows Server 2012 [applications de bureau | Applications UWP] |
plateforme cible | Windows |
d’en-tête | memoryapi.h (include Windows.h) |
bibliothèque | onecore.lib |
DLL | Kernel32.dll |
Voir aussi
création d’un d’affichage de fichiers