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 |
---|---|
|
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. |
|
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. |
|
A memória não pôde ser mapeada ou não foi possível alocar memória virtual suficiente. |
|
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) |