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 für ein Dateizuordnungsobjekt. Die CreateFileMappingFromApp-Funktion gibt dieses Handle zurück.

[in] DesiredAccess

Der Typ des Zugriffs auf ein Dateizuordnungsobjekt, das den Seitenschutz der Seiten bestimmt. Dieser Parameter kann einer der folgenden Werte oder ggf. eine bitweise OR-Kombination aus mehreren Werten sein.

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 MapViewOfFileFromApp entspricht 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_READ- oder 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 MapViewOfFileFromApp(FILE_MAP_WRITE | FILE_MAP_READ) entspricht FILE_MAP_WRITE.

 

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

Wert Bedeutung
FILE_MAP_COPY
Eine Kopieransicht der Datei wird zugeordnet. Das Dateizuordnungsobjekt muss mit PAGE_READONLY, PAGE_READ_EXECUTE, PAGE_WRITECOPY oder PAGE_READWRITE-Schutz erstellt worden sein.

Wenn ein Prozess in eine Seite zum Kopieren beim Schreiben 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 Copy-On-Write in Lese-/Schreibzugriff.

Wenn der Kopierzugriff angegeben wird, wird der System- und Prozesscommit für die gesamte Ansicht berechnet, da der aufrufende Prozess potenziell auf jede Seite in der Ansicht schreiben kann, sodass alle Seiten privat sind. Der Inhalt der neuen Seite wird nie in die ursprüngliche Datei zurückgeschrieben 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 von Unterstützung für große Seiten zugeordnet werden soll. Die Größe der Ansicht muss ein Vielfaches der Größe einer großen Seite sein, die von der GetLargePageMinimum-Funktion gemeldet wird, und das Dateizuordnungsobjekt muss mit der Option SEC_LARGE_PAGES erstellt worden sein. Wenn Sie einen Wert ungleich NULL für lpBaseAddress angeben, muss der Wert ein Vielfaches von GetLargePageMinimum sein.
FILE_MAP_TARGETS_INVALID
Legt alle Speicherorte in der zugeordneten Datei als ungültige Ziele für Control Flow Guard (CFG) fest. Dieses Flag ähnelt PAGE_TARGETS_INVALID. Verwenden Sie dieses Flag in Kombination mit dem FILE_MAP_EXECUTE Ausführungsrecht. Jeder indirekte Aufruf von Speicherorten auf diesen Seiten schlägt CFG-Überprüfungen fehl, und der Prozess wird beendet. Das Standardverhalten für ausführbare Seiten, die zugeordnet sind, besteht darin, als gültige Aufrufziele für CFG gekennzeichnet zu werden.
 

Bei Dateizuordnungsobjekten, 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_READ festgelegt werden.

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

[in] FileOffset

Der Dateioffset, an dem die Ansicht beginnen soll. Der Offset muss einen Offset innerhalb der Dateizuordnung angeben. Sie müssen auch mit der Granularität der Speicherbelegung des Systems übereinstimmen. Das heißt, der Offset muss ein Vielfaches der Zuordnungsgranularität sein. Um die Granularität der Speicherbelegung 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 von CreateFileMappingFromApp angegebenen maximalen Größe sein. 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 bei der Funktion ein Fehler auftritt, ist der Rückgabewert NULL. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

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

Die Ausnahme bezieht sich auf Remotedateien. MapViewOfFileFromApp funktioniert zwar mit Remotedateien, hält sie jedoch nicht kohärent. Wenn z. B. zwei Computer eine Datei als schreibbar zuordnen und beide dieselbe Seite ändern, sieht jeder Computer nur seine eigenen Schreibvorgänge auf der Seite. Wenn die Daten auf dem Datenträger aktualisiert werden, werden sie nicht zusammengeführt.

Sie können nur erfolgreich schutz vor ausführbaren Dateien anfordern, wenn Ihre App über die funktion codeGeneration verfügt .

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile memoryapi.h (windows.h einschließen)
Bibliothek onecore.lib
DLL Kernel32.dll

Siehe auch

CreateFileMapping

Erstellen einer Dateiansicht

DuplicateHandle

GetSystemInfo

MapViewOfFile

MapViewOfFileEx

Speicherverwaltungsfunktionen

OpenFileMapping

SYSTEM_INFO

UnmapViewOfFile