Função MapViewOfFileFromApp (memoryapi.h)

Mapeia uma exibição de um mapeamento de arquivo para o espaço de endereço de um aplicativo da Windows Store de chamada.

Sintaxe

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

Parâmetros

[in] hFileMappingObject

Um identificador para um objeto de mapeamento de arquivo. A função CreateFileMappingFromApp retorna esse identificador.

[in] DesiredAccess

O tipo de acesso a um objeto de mapeamento de arquivo, que determina a proteção de página das páginas. Esse parâmetro pode ser um dos valores a seguir ou uma combinação OR bit a bit de vários valores, quando apropriado.

Valor Significado
FILE_MAP_ALL_ACCESS
Uma exibição de leitura/gravação do arquivo é mapeada. O objeto de mapeamento de arquivo deve ter sido criado com PAGE_READWRITE proteção.

Quando usado com MapViewOfFileFromApp, FILE_MAP_ALL_ACCESS é equivalente a FILE_MAP_WRITE.

FILE_MAP_READ
Uma exibição somente leitura do arquivo é mapeada. Uma tentativa de gravar na exibição de arquivo resulta em uma violação de acesso.

O objeto de mapeamento de arquivo deve ter sido criado com proteção de PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE_READ ou PAGE_EXECUTE_READWRITE .

FILE_MAP_WRITE
Uma exibição de leitura/gravação do arquivo é mapeada. O objeto de mapeamento de arquivo deve ter sido criado com PAGE_READWRITE proteção.

Quando usado com MapViewOfFileFromApp, (FILE_MAP_WRITE | FILE_MAP_READ) é equivalente a FILE_MAP_WRITE.

 

Usando OR bit a bit, você pode combinar os valores acima com esses valores.

Valor Significado
FILE_MAP_COPY
Uma exibição de cópia na gravação do arquivo é mapeada. O objeto de mapeamento de arquivo deve ter sido criado com proteção de PAGE_READONLY, PAGE_READ_EXECUTE, PAGE_WRITECOPY ou PAGE_READWRITE .

Quando um processo é gravado em uma página de cópia na gravação, o sistema copia a página original para uma nova página que é privada para o processo. A nova página é apoiada pelo arquivo de paginação. A proteção da nova página muda de cópia na gravação para leitura/gravação.

Quando o acesso de cópia na gravação é especificado, a cobrança de confirmação do sistema e do processo tomada é para toda a exibição, pois o processo de chamada pode potencialmente gravar em cada página no modo de exibição, tornando todas as páginas privadas. O conteúdo da nova página nunca é gravado no arquivo original e é perdido quando a exibição é não mapeada.

FILE_MAP_LARGE_PAGES
Começando com Windows 10, versão 1703, esse sinalizador especifica que o modo de exibição deve ser mapeado usando suporte a páginas grandes. O tamanho do modo de exibição deve ser um múltiplo do tamanho de uma página grande relatada pela função GetLargePageMinimum e o objeto de mapeamento de arquivo deve ter sido criado usando a opção SEC_LARGE_PAGES . Se você fornecer um valor não nulo para lpBaseAddress, o valor deverá ser um múltiplo de GetLargePageMinimum.
FILE_MAP_TARGETS_INVALID
Define todos os locais no arquivo mapeado como destinos inválidos para o CFG (Control Flow Guard). Esse sinalizador é semelhante a PAGE_TARGETS_INVALID. Use esse sinalizador em combinação com o FILE_MAP_EXECUTE direito de execução de acesso. Qualquer chamada indireta para locais nessas páginas falhará nas verificações do CFG e o processo será encerrado. O comportamento padrão para páginas executáveis alocadas deve ser marcado como destinos de chamada válidos para CFG.
 

Para objetos de mapeamento de arquivo criados com o atributo SEC_IMAGE , o parâmetro dwDesiredAccess não tem efeito e deve ser definido como qualquer valor válido, como FILE_MAP_READ.

Para obter mais informações sobre o acesso a objetos de mapeamento de arquivos, consulte Direitos de Acesso e Segurança de Mapeamento de Arquivos.

[in] FileOffset

O deslocamento de arquivo em que a exibição deve começar. O deslocamento deve especificar um deslocamento dentro do mapeamento de arquivo. Eles também devem corresponder à granularidade de alocação de memória do sistema. Ou seja, o deslocamento deve ser um múltiplo da granularidade de alocação. Para obter a granularidade de alocação de memória do sistema, use a função GetSystemInfo , que preenche os membros de uma estrutura SYSTEM_INFO .

[in] NumberOfBytesToMap

O número de bytes de um mapeamento de arquivo a ser mapeado para a exibição. Todos os bytes devem estar dentro do tamanho máximo especificado por CreateFileMappingFromApp. Se esse parâmetro for 0 (zero), o mapeamento se estenderá do deslocamento especificado até o final do mapeamento de arquivo.

Retornar valor

Se a função for bem-sucedida, o valor retornado será o endereço inicial da exibição mapeada.

Se a função falhar, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Com uma exceção importante, as exibições de arquivo derivadas de qualquer objeto de mapeamento de arquivo com o mesmo arquivo são coerentes ou idênticas em um momento específico. A coerência é garantida para exibições dentro de um processo e para exibições mapeadas por processos diferentes.

A exceção está relacionada a arquivos remotos. Embora MapViewOfFileFromApp funcione com arquivos remotos, ele não os mantém coerentes. Por exemplo, se dois computadores mapearem um arquivo como gravável e ambos alterarem a mesma página, cada computador só verá suas próprias gravações na página. Quando os dados são atualizados no disco, eles não são mesclados.

Você só poderá solicitar proteção executável com êxito se o aplicativo tiver a funcionalidade codeGeneration .

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho memoryapi.h (inclua Windows.h)
Biblioteca onecore.lib
DLL Kernel32.dll

Confira também

CreateFileMapping

Criando uma exibição de arquivo

DuplicateHandle

Getsysteminfo

Mapviewoffile

MapViewOfFileEx

Funções de gerenciamento da memória

OpenFileMapping

SYSTEM_INFO

Unmapviewoffile