Função NdisMMapIoSpace (ndis.h)

O NdisMMapIoSpace mapeia um determinado intervalo "físico" relativo ao barramento de RAM do dispositivo ou se registra em um intervalo virtual de espaço do sistema.

Sintaxe

NDIS_STATUS NdisMMapIoSpace(
  [out] PVOID                 *VirtualAddress,
  [in]  NDIS_HANDLE           MiniportAdapterHandle,
  [in]  NDIS_PHYSICAL_ADDRESS PhysicalAddress,
  [in]  UINT                  Length
);

Parâmetros

[out] VirtualAddress

Ponteiro para uma variável fornecida pelo chamador que será definida como o endereço virtual convertido se a chamada for bem-sucedida.

[in] MiniportAdapterHandle

Especifica a entrada do identificador para MiniportInitializeEx.

[in] PhysicalAddress

Especifica o endereço físico base relativo ao barramento do intervalo de memória do dispositivo a ser mapeado.

[in] Length

Especifica o número de bytes a serem mapeados.

Retornar valor

NdisMMapIoSpace pode retornar qualquer um dos seguintes valores de status:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
O intervalo de memória do dispositivo foi mapeado com êxito para que o valor em VirtualAddress seja válido e o intervalo mapeado tenha sido reivindicado no registro para a NIC.
NDIS_STATUS_RESOURCE_CONFLICT
Uma tentativa de reivindicar o intervalo de memória do dispositivo no registro falhou, possivelmente porque outro driver já reivindicou o intervalo para seu dispositivo. NdisMMapIoSpace registra um erro se isso ocorrer.
NDIS_STATUS_RESOURCES
A memória não pôde ser mapeada ou não foi possível alocar memória virtual suficiente.
NDIS_STATUS_FAILURE
O tipo de barramento ou o número do barramento está fora do intervalo ou o PhysicalAddress e Length fornecidos eram inválidos (possivelmente não dentro do espaço de E/S da plataforma atual).

Comentários

Essa função é chamada por drivers de NICs que têm memória a bordo ou um banco de registros de dispositivos que aparecem no espaço de E/S do host. Por exemplo, o driver de uma NIC que usa PIO chama NdisMMapIoSpace.

Uma chamada bem-sucedida para NdisMMapIoSpace declara recursos de hardware no registro para a NIC do driver. Consequentemente, apenas as funções MiniportInitializeEx chamam NdisMMapIoSpace.

NdisMMapIoSpace define a variável em VirtualAddress como NULL se ela não retornar NDIS_STATUS_SUCCESS.

MiniportInitializeEx obtém o valor PhysicalAddress da chave do Registro parâmetros do driver ou chamando uma função de configuração NdisXxx específica do tipo de barramento. O intervalo de endereços físicos fornecido deve estar dentro do espaço de E/S da plataforma atual. É um erro de programação chamar NdisMMapIoSpace com um endereço de memória física do host.

Um driver de miniporto deve chamar o NdisMUnmapIoSpace recíproco para liberar sua declaração em recursos do sistema se MiniportInitializeEx falhar subsequentemente em inicializar uma NIC, se uma NIC for removida do computador e/ou quando o driver estiver descarregando.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte NdisMMapIoSpace (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (confira NdisMMapIoSpace (NDIS 5.1)) no Windows XP.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI Irql_Miniport_Driver_Function(ndis), NdisMMapIoSpace(ndis)

Confira também

MiniportHaltEx

MiniportInitializeEx

NdisMGetBusData

NdisMUnmapIoSpace

NdisOpenConfigurationEx

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort