Funzione MapViewOfFileFromApp (memoryapi.h)

Esegue il mapping di un file nello spazio indirizzi di un'app di Windows Store chiamante.

Sintassi

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

Parametri

[in] hFileMappingObject

Handle per un oggetto di mapping dei file. La funzione CreateFileMappingFromApp restituisce questo handle.

[in] DesiredAccess

Tipo di accesso a un oggetto di mapping dei file, che determina la protezione della pagina delle pagine. Questo parametro può essere uno dei valori seguenti o una combinazione OR bit per bit di più valori, se appropriato.

Valore Significato
FILE_MAP_ALL_ACCESS
Viene mappata una visualizzazione di lettura/scrittura del file. L'oggetto di mapping dei file deve essere stato creato con PAGE_READWRITE protezione.

Se usato con MapViewOfFileFromApp, FILE_MAP_ALL_ACCESS equivale a FILE_MAP_WRITE.

FILE_MAP_READ
Viene mappata una visualizzazione di sola lettura del file. Un tentativo di scrittura nella visualizzazione file comporta una violazione di accesso.

L'oggetto mapping file deve essere stato creato con PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE_READ o PAGE_EXECUTE_READWRITE protezione.

FILE_MAP_WRITE
Viene mappata una visualizzazione di lettura/scrittura del file. L'oggetto di mapping dei file deve essere stato creato con PAGE_READWRITE protezione.

Se usato con MapViewOfFileFromApp, (FILE_MAP_WRITE | FILE_MAP_READ) equivale a FILE_MAP_WRITE.

 

Usando OR bit per bit, è possibile combinare i valori precedenti con questi valori.

Valore Significato
FILE_MAP_COPY
Viene mappata una visualizzazione copia-on-write del file. L'oggetto di mapping dei file deve essere stato creato con PAGE_READONLY, PAGE_READ_EXECUTE, PAGE_WRITECOPY o PAGE_READWRITE protezione.

Quando un processo scrive in una pagina di scrittura copiata, il sistema copia la pagina originale in una nuova pagina privata nel processo. La nuova pagina è supportata dal file di paging. La protezione della nuova pagina viene modificata dalla copia in scrittura alla lettura/scrittura.

Quando viene specificato l'accesso in scrittura di copia, l'addebito del commit del sistema e del processo viene eseguito per l'intera visualizzazione perché il processo chiamante può potenzialmente scrivere in ogni pagina della visualizzazione, rendendo tutte le pagine private. Il contenuto della nuova pagina non viene mai scritto nel file originale e viene perso quando la visualizzazione viene annullata.

FILE_MAP_LARGE_PAGES
A partire da Windows 10, versione 1703, questo flag specifica che la visualizzazione deve essere mappata usando il supporto di pagine di grandi dimensioni. Le dimensioni della visualizzazione devono essere multiple delle dimensioni di una pagina di grandi dimensioni segnalate dalla funzione GetLargePageMinimum e l'oggetto mapping file deve essere stato creato usando l'opzione SEC_LARGE_PAGES . Se si specifica un valore non null per lpBaseAddress, il valore deve essere un multiplo di GetLargePageMinimum.
FILE_MAP_TARGETS_INVALID
Imposta tutte le posizioni nel file mappato come destinazioni non valide per Control Flow Guard (CFG). Questo flag è simile a PAGE_TARGETS_INVALID. Usare questo flag in combinazione con il diritto di accesso eseguito FILE_MAP_EXECUTE. Qualsiasi chiamata indiretta alle posizioni di tali pagine avrà esito negativo sui controlli CFG e il processo verrà terminato. Il comportamento predefinito per le pagine eseguibili allocato deve essere contrassegnato come destinazioni di chiamata valide per CFG.
 

Per gli oggetti di mapping dei file creati con l'attributo SEC_IMAGE , il parametro dwDesiredAccess non ha alcun effetto e deve essere impostato su qualsiasi valore valido, ad esempio FILE_MAP_READ.

Per altre informazioni sull'accesso agli oggetti di mapping dei file, vedere Sicurezza mapping file e diritti di accesso.

[in] FileOffset

Offset del file in cui iniziare la visualizzazione. L'offset deve specificare un offset all'interno del mapping dei file. Devono corrispondere anche alla granularità dell'allocazione della memoria del sistema. Ovvero, l'offset deve essere un multiplo della granularità dell'allocazione. Per ottenere la granularità dell'allocazione della memoria del sistema, usare la funzione GetSystemInfo , che riempie i membri di una struttura di SYSTEM_INFO .

[in] NumberOfBytesToMap

Numero di byte di un mapping di file per eseguire il mapping alla visualizzazione. Tutti i byte devono essere entro le dimensioni massime specificate da CreateFileMappingFromApp. Se questo parametro è 0 (zero), il mapping si estende dall'offset specificato alla fine del mapping di file.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è l'indirizzo iniziale della visualizzazione mappata.

Se la funzione ha esito negativo, il valore restituito è NULL. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Con un'eccezione importante, le visualizzazioni file derivate da qualsiasi oggetto di mapping di file supportato dallo stesso file sono coerenti o identici in un momento specifico. La coesistenza è garantita per le visualizzazioni all'interno di un processo e per le visualizzazioni mappate da processi diversi.

L'eccezione è correlata ai file remoti. Anche se MapViewOfFileFromApp funziona con i file remoti, non li mantiene coerenti. Ad esempio, se due computer eseguono il mapping di un file come scrivibili e entrambi modificano la stessa pagina, ogni computer visualizza solo le proprie scritture nella pagina. Quando i dati vengono aggiornati sul disco, non vengono uniti.

È possibile richiedere la protezione eseguibile solo se l'app ha la funzionalità codeGeneration .

Requisiti

Requisito Valore
Client minimo supportato Windows 8 [app desktop | App UWP]
Server minimo supportato Windows Server 2012 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione memoryapi.h (include Windows.h)
Libreria onecore.lib
DLL Kernel32.dll

Vedere anche

CreateFileMapping

Creazione di una visualizzazione file

DuplicateHandle

GetSystemInfo

MapViewOfFile

MapViewOfFileEx

Funzioni di gestione della memoria

OpenFileMapping

SYSTEM_INFO

UnmapViewOfFile