Compartilhar via


Função ZwMapViewOfSectionEx (wdm.h)

A rotina ZwMapViewOfSectionEx mapeia uma exibição de uma seção para o espaço de endereço virtual de um processo de assunto.

Sintaxe

NTSYSAPI NTSTATUS ZwMapViewOfSectionEx(
  [in]                HANDLE                  SectionHandle,
  [in]                HANDLE                  ProcessHandle,
  [in, out]           PVOID                   *BaseAddress,
  [in, out, optional] PLARGE_INTEGER          SectionOffset,
  [in, out]           PSIZE_T                 ViewSize,
  [in]                ULONG                   AllocationType,
  [in]                ULONG                   PageProtection,
  [in, out, optional] PMEM_EXTENDED_PARAMETER ExtendedParameters,
  [in]                ULONG                   ExtendedParameterCount
);

Parâmetros

[in] SectionHandle

Manipule para um objeto de seção. Esse identificador é criado por uma chamada bem-sucedida para ZwCreateSection ou ZwOpenSection.

[in] ProcessHandle

Identificador para o objeto que representa o processo no qual a exibição deve ser mapeada. Use a macro ZwCurrentProcess para especificar o processo atual. O identificador deve ter sido aberto com acesso PROCESS_VM_OPERATION .

[in, out] BaseAddress

Ponteiro para uma variável que recebe o endereço base da exibição. Se o valor desse parâmetro não for NULL, a exibição será alocada começando no endereço virtual especificado arredondado para baixo até o próximo limite de endereço de 64 quilobytes.

[in, out, optional] SectionOffset

Um ponteiro para uma variável que recebe o deslocamento, em bytes, do início da seção para a exibição. Se esse ponteiro não for NULL, o deslocamento será arredondado para baixo até o próximo limite de tamanho de granularidade de alocação.

[in, out] ViewSize

Um ponteiro para uma variável SIZE_T. Se o valor inicial dessa variável for zero, ZwMapViewOfSectionEx mapeará uma exibição da seção que começa em SectionOffset e continua até o final da seção. Caso contrário, o valor inicial especifica o tamanho da exibição, em bytes. ZwMapViewOfSectionEx sempre arredonda esse valor para cima até o múltiplo mais próximo de PAGE_SIZE antes de mapear a exibição.

No retorno, o valor recebe o tamanho real, em bytes, da exibição.

[in] AllocationType

Especifica um conjunto de sinalizadores que descreve o tipo de alocação a ser executada para a região de páginas especificada. Os sinalizadores válidos são MEM_RESERVE, MEM_TOP_DOWN, MEM_LARGE_PAGES, MEM_DIFFERENT_IMAGE_BASE_OK e MEM_REPLACE_PLACEHOLDER. Embora MEM_COMMIT não seja permitido, ele estará implícito, a menos que MEM_RESERVE seja especificado. Para obter mais informações sobre os sinalizadores MEM_XXX , consulte a descrição das rotinas VirtualAlloc e MapViewOfFile3 .

[in] PageProtection

Especifica a proteção de página a ser aplicada ao modo de exibição mapeado.

Para objetos de seção criados com o atributo SEC_IMAGE, o parâmetro PageProtection não tem efeito e pode ser definido como qualquer valor válido, como PAGE_READONLY.

Para objetos de seção criados com o atributo SEC_IMAGE_NO_EXECUTE, o valor PageProtection deve ser definido como PAGE_READONLY.

Para seções que não são de imagem, o valor do parâmetro PageProtection deve ser compatível com a proteção de página da seção especificada quando ZwCreateSection foi chamado.

ZwMapViewOfSectionEx sempre define o tipo de cache das páginas mapeadas para corresponder ao tipo de cache fornecido quando o objeto de seção foi criado. Por exemplo, se ZwCreateSection foi chamado com o sinalizador SEC_NOCACHE, ZwMapViewOfSectionEx mapeará as páginas sem cache, independentemente de o parâmetro PageProtection incluir o sinalizador PAGE_NOCACHE ou não.

[in, out, optional] ExtendedParameters

Um ponteiro opcional para um ou mais parâmetros estendidos do tipo MEM_EXTENDED_PARAMETER. Para obter mais informações sobre parâmetros estendidos, consulte a descrição da rotina MapViewOfFile3 .

[in] ExtendedParameterCount

Especifica o número de elementos na matriz ExtendedParameters.

Retornar valor

ZwMapViewOfSectionEx retorna um valor NTSTATUS. Os possíveis valores retornados incluem o seguinte:

Código de retorno Descrição
STATUS_SUCCESS A rotina executou com êxito a operação solicitada.
STATUS_CONFLICTING_ADDRESSES O intervalo de endereços especificado está em conflito com um intervalo que já está reservado.
STATUS_INVALID_PAGE_PROTECTION O valor especificado para o parâmetro PageProtection é inválido.
STATUS_SECTION_PROTECTION O valor especificado para o parâmetro PageProtection é incompatível com a proteção de página especificada quando a seção foi criada.

Comentários

Várias exibições diferentes de uma seção podem ser mapeadas simultaneamente para o espaço de endereço virtual de um ou mais processos.

Não use ZwMapViewOfSectionEx para mapear um intervalo de memória de \Device\PhysicalMemory para o modo de usuário, a menos que o driver tenha alocado diretamente o intervalo de memória por meio de MmAllocatePagesForMdlEx ou outro método que garanta que nenhum outro componente do sistema tenha mapeado o mesmo intervalo de memória com um valor de MEMORY_CACHING_TYPE diferente.

Os aplicativos de usuário não podem acessar \Device\PhysicalMemory diretamente a partir do Windows Server 2003 com Service Pack 1 (SP1) e só poderão acessá-lo se o driver passar um identificador para o aplicativo.

Para obter mais informações sobre objetos de seção, consulte Objetos e exibições de seção.

Se a chamada para essa função ocorrer no modo de usuário, você deverá usar o nome "NtMapViewOfSectionEx" em vez de "ZwMapViewOfSectionEx".

Para chamadas de drivers de modo kernel, as versões NtXxx e ZwXxx de uma rotina do Windows Native System Services podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 11, versão 24H2
Cabeçalho wdm.h

Confira também

Usando versões Nt e Zw das rotinas de serviços do sistema nativo

ZwCreateSection

ZwOpenSection

ZwMapViewOfSection

ZwUnmapViewOfSection

MapViewOfFile3