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.
Mit bitweisem OR können Sie die oben genannten Werte mit diesen Werten kombinieren.
Wert | Bedeutung |
---|---|
|
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. |
|
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. |
|
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 |