Partilhar via


Função NdisMMapIoSpace (ndis.h)

NdisMMapIoSpace mapeia um determinado intervalo "físico" relativo de barramento de RAM do dispositivo ou se registra em um intervalo virtual de espaço no 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.

Valor de retorno

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 da 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 de alcance ou o PhysicalAddress e Length eram inválidos (possivelmente não dentro do espaço de E/S da plataforma atual).

Observações

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

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

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

MiniportInitializeEx obtém o valor PhysicalAddress da chave de registro parâmetros de do driver ou chamando uma função de configuração de NdisXxx específica do barramento. O intervalo de endereços físico 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 recíproco NdisMUnmapIoSpace para liberar sua declaração sobre os recursos do sistema se MiniportInitializeEx posteriormente não inicializar uma NIC, se uma NIC for removida do computador e/ou quando o driver estiver descarregando.

Requisitos

Requisito Valor
de cliente com suporte mínimo 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 (consulte NdisMMapIoSpace (NDIS 5.1)) no Windows XP.
da Plataforma de Destino Universal
cabeçalho ndis.h (inclua Ndis.h)
biblioteca Ndis.lib
IRQL PASSIVE_LEVEL
regras de conformidade de DDI Irql_Miniport_Driver_Function(ndis), NdisMMapIoSpace(ndis)

Consulte também

MiniportHaltEx

MiniportInitializeEx

NdisMGetBusData

NdisMUnmapIoSpace

NdisOpenConfigurationEx

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort