Compartilhar via


Função MmMapIoSpaceEx (wdm.h)

A rotina MmMapIoSpaceEx mapeia o intervalo de endereços físicos fornecido para o espaço do sistema não paginado usando a proteção de página especificada.

Sintaxe

PVOID MmMapIoSpaceEx(
  [in] PHYSICAL_ADDRESS PhysicalAddress,
  [in] SIZE_T           NumberOfBytes,
  [in] ULONG            Protect
);

Parâmetros

[in] PhysicalAddress

Especifica o endereço físico inicial do intervalo de E/S a ser mapeado.

[in] NumberOfBytes

Especifica um valor maior que zero, indicando o número de bytes a serem mapeados.

[in] Protect

Sinalizar bits que especificam a proteção a ser usada para o intervalo mapeado. O chamador deve definir um dos bits de sinalizador a seguir no parâmetro Protect .

Bit de sinalizador Significado
PAGE_READONLY O intervalo mapeado só pode ser lido, não gravado.
PAGE_READWRITE O intervalo mapeado pode ser lido ou gravado.
PAGE_EXECUTE O intervalo mapeado pode ser executado, mas não lido ou gravado.
PAGE_EXECUTE_READ O intervalo mapeado pode ser executado ou lido, mas não gravado.
PAGE_EXECUTE_READWRITE O intervalo mapeado pode ser executado, lido ou gravado.
 

Além disso, o chamador pode definir um (mas não ambos) dos bits de sinalizador opcionais a seguir no parâmetro Protect .

Bit de sinalizador Significado
PAGE_NOCACHE Especifica a memória não armazenada em cache.
PAGE_WRITECOMBINE Especifica a memória combinada de gravação (a memória não deve ser armazenada em cache pelo processador, mas as gravações na memória podem ser combinadas pelo processador).

Retornar valor

MmMapIoSpaceEx retorna o endereço virtual base que mapeia o endereço físico base para o intervalo. Se o espaço para mapeamento do intervalo for insuficiente, ele retornará NULL.

Comentários

Um driver deve chamar essa rotina durante a inicialização do dispositivo se receber recursos traduzidos do tipo CmResourceTypeMemory em uma estrutura CM_PARTIAL_RESOURCE_DESCRIPTOR . MmMapIoSpaceEx mapeia o endereço físico retornado na lista de recursos para um endereço virtual por meio do qual o driver pode acessar registros de dispositivo.

Por exemplo, drivers de dispositivos PIO que alocam buffers de E/S de longo prazo podem chamar essa rotina para tornar esses buffers acessíveis ou para tornar a memória do dispositivo acessível.

Para obter mais informações sobre como usar essa rotina, consulte Mapeamento Bus-Relative endereços para endereços virtuais.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 10.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=DISPATCH_LEVEL

Confira também

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace