Compartilhar via


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

Confira também

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace