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 |