Freigeben über


MapViewOfFileFromApp-Funktion (memoryapi.h)

Ordnet eine Ansicht einer Dateizuordnung dem Adressraum einer aufrufenden Windows Store-App zu.

Syntax

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

Parameter

[in] hFileMappingObject

Ein Handle zu einem Dateizuordnungsobjekt. Die CreateFileMappingFromApp-Funktion gibt dieses Handle zurück.

[in] DesiredAccess

Der Typ des Zugriffs auf ein Dateizuordnungsobjekt, das den Seitenschutz der Seiten bestimmt. Bei diesem Parameter kann es sich um einen der folgenden Werte oder um eine bitweise ODER Kombination aus mehreren Werten handeln.

Wert Bedeutung
FILE_MAP_ALL_ACCESS
Eine Lese-/Schreibansicht der Datei wird zugeordnet. Das Dateizuordnungsobjekt muss mit PAGE_READWRITE Schutz erstellt worden sein.

Bei Verwendung mit MapViewOfFileFromAppentspricht FILE_MAP_ALL_ACCESSFILE_MAP_WRITE.

FILE_MAP_READ
Eine schreibgeschützte Ansicht der Datei wird zugeordnet. Ein Versuch, in die Dateiansicht zu schreiben, führt zu einer Zugriffsverletzung.

Das Dateizuordnungsobjekt muss mit PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE_READoder PAGE_EXECUTE_READWRITE Schutz erstellt worden sein.

FILE_MAP_WRITE
Eine Lese-/Schreibansicht der Datei wird zugeordnet. Das Dateizuordnungsobjekt muss mit PAGE_READWRITE Schutz erstellt worden sein.

Bei Verwendung mit MapViewOfFileFromAppentspricht (FILE_MAP_WRITE | FILE_MAP_READ)FILE_MAP_WRITE.

 

Mit bitweisem OR können Sie die oben genannten Werte mit diesen Werten kombinieren.

Wert Bedeutung
FILE_MAP_COPY
Eine Kopier-on-Write-Ansicht der Datei wird zugeordnet. Das Dateizuordnungsobjekt muss mit PAGE_READONLY, PAGE_EXECUTE_READ, PAGE_WRITECOPYoder PAGE_READWRITE Schutz erstellt worden sein.

Wenn ein Prozess auf eine Kopie-on-Write-Seite schreibt, kopiert das System die ursprüngliche Seite auf eine neue Seite, die für den Prozess privat ist. Die neue Seite wird von der Auslagerungsdatei unterstützt. Der Schutz der neuen Seite ändert sich von "Kopieren beim Schreiben" in "Lese-/Schreibzugriff".

Wenn der Schreibzugriff auf Kopieren angegeben ist, wird das System und der Prozess für die gesamte Ansicht übernommen, da der Aufrufvorgang potenziell auf jede Seite in der Ansicht schreiben kann, wodurch alle Seiten privat sind. Der Inhalt der neuen Seite wird nie wieder in die Originaldatei geschrieben und geht verloren, wenn die Ansicht nicht zugeordnet ist.

FILE_MAP_LARGE_PAGES
Ab Windows 10, Version 1703, gibt dieses Flag an, dass die Ansicht mithilfe Unterstützung für große Seitenzugeordnet werden soll. Die Größe der Ansicht muss ein Vielfaches der Größe einer großen Seite sein, die vom GetLargePageMinimum-Funktion gemeldet wird, und das Dateizuordnungsobjekt muss mithilfe der Option SEC_LARGE_PAGES erstellt worden sein. Wenn Sie einen Wert ungleich NULL für lpBaseAddressangeben, muss der Wert ein Vielfaches von GetLargePageMinimumsein.
FILE_MAP_TARGETS_INVALID
Legt alle Speicherorte in der zugeordneten Datei als ungültige Ziele für Control Flow Guard (CFG) fest. Diese Kennzeichnung ähnelt PAGE_TARGETS_INVALID. Verwenden Sie dieses Kennzeichen in Kombination mit der Ausführungsberechtigung FILE_MAP_EXECUTE. Alle indirekten Aufrufe an Speicherorte auf diesen Seiten schlagen CFG-Prüfungen fehl, und der Vorgang wird beendet. Das Standardverhalten für zugeordnete ausführbare Seiten besteht darin, gültige Anrufziele für CFG zu markieren.
 

Für dateizuordnungsobjekte, die mit dem attribut SEC_IMAGE erstellt wurden, hat der dwDesiredAccess Parameter keine Auswirkung und sollte auf einen beliebigen gültigen Wert wie FILE_MAP_READfestgelegt werden.

Weitere Informationen zum Zugriff auf Dateizuordnungsobjekte finden Sie unter Dateizuordnungssicherheit und Zugriffsberechtigungen.

[in] FileOffset

Der Dateioffset, in dem die Ansicht beginnen soll. Der Offset muss einen Offset innerhalb der Dateizuordnung angeben. Sie müssen auch mit der Granularität der Speicherzuweisung des Systems übereinstimmen. Das heißt, der Offset muss ein Vielfaches der Zuordnungs granularität sein. Um die Granularität der Speicherzuweisung des Systems zu erhalten, verwenden Sie die GetSystemInfo--Funktion, die die Member einer SYSTEM_INFO-Struktur ausfüllt.

[in] NumberOfBytesToMap

Die Anzahl der Bytes einer Dateizuordnung, die der Ansicht zugeordnet werden soll. Alle Bytes müssen innerhalb der maximalen Größe sein, die von CreateFileMappingFromAppangegeben wird. Wenn dieser Parameter 0 (null) ist, erstreckt sich die Zuordnung vom angegebenen Offset bis zum Ende der Dateizuordnung.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert die Startadresse der zugeordneten Ansicht.

Wenn die Funktion fehlschlägt, ist der Rückgabewert NULL-. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

Mit einer wichtigen Ausnahme sind Dateiansichten, die von jedem Dateizuordnungsobjekt abgeleitet werden, das von derselben Datei unterstützt wird, kohärent oder identisch zu einem bestimmten Zeitpunkt. Die Kohärenz ist für Ansichten innerhalb eines Prozesses und für Ansichten gewährleistet, die von verschiedenen Prozessen zugeordnet werden.

Die Ausnahme bezieht sich auf Remotedateien. Obwohl MapViewOfFileFromApp mit Remotedateien funktioniert, bleiben sie nicht kohärent. Wenn beispielsweise zwei Computer eine Datei als schreibbar zuordnen und beide die gleiche Seite ändern, sieht jeder Computer nur eigene Schreibvorgänge auf der Seite. Wenn die Daten auf dem Datenträger aktualisiert werden, wird sie nicht zusammengeführt.

Sie können nur erfolgreich ausführbaren Schutz anfordern, wenn Ihre App über die CodeGeneration--Funktion verfügt.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 8 [Desktop-Apps | UWP-Apps]
mindestens unterstützte Server- Windows Server 2012 [Desktop-Apps | UWP-Apps]
Zielplattform- Fenster
Header- memoryapi.h (include Windows.h)
Library onecore.lib
DLL- Kernel32.dll

Siehe auch

CreateFileMapping-

Erstellen einer Dateiansicht

DuplicateHandle-

GetSystemInfo-

MapViewOfFile-

MapViewOfFileEx-

Speicherverwaltungsfunktionen

OpenFileMapping-

SYSTEM_INFO

UnmapViewOfFile-