Função MmMapIoSpace (wdm.h)
A rotina MmMapIoSpace mapeia o intervalo de endereços físicos fornecido para o espaço do sistema nãopagado.
Sintaxe
PVOID MmMapIoSpace(
[in] PHYSICAL_ADDRESS PhysicalAddress,
[in] SIZE_T NumberOfBytes,
[in] MEMORY_CACHING_TYPE CacheType
);
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] CacheType
Especifica um valor MEMORY_CACHING_TYPE , que indica o atributo de cache a ser usado para mapear o intervalo de endereços físicos.
Retornar valor
MmMapIoSpace 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 . MmMapIoSpace mapeia o endereço físico retornado na lista de recursos para um endereço lógico por meio do qual o driver pode acessar registros de dispositivo.
MmMapIoSpace só deve ser usado com páginas bloqueadas (pertencem às páginas bloqueadas de um espaço de E/S ou MDL), caso contrário, o proprietário da memória poderia liberá-la (ou a memória poderia ser paginada, etc.).
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 |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <=DISPATCH_LEVEL |