Partilhar via


Função NdisMRegisterIoPortRange (ndis.h)

NdisMRegisterIoPortRange configura o acesso do driver às portas de E/S do dispositivo com as funções NdisRawReadPortXxx e NdisRawWritePortxxx funções e declara o intervalo de endereços de porta de E/S no registro para a NIC desse driver.

Sintaxe

NDIS_STATUS NdisMRegisterIoPortRange(
  [out] PVOID       *PortOffset,
  [in]  NDIS_HANDLE MiniportAdapterHandle,
  [in]  UINT        InitialPort,
  [in]  UINT        NumberOfPorts
);

Parâmetros

[out] PortOffset

Especifica uma variável fornecida pelo chamador na qual essa função retorna o endereço virtual base mapeado para o intervalo de portas de E/S relativo ao barramento especificado por InitialPort e NumberOfPorts.

[in] MiniportAdapterHandle

Especifica a entrada do identificador para MiniportInitializeEx.

[in] InitialPort

Especifica o endereço da porta base relativa ao barramento para um intervalo de portas a serem mapeadas.

[in] NumberOfPorts

Especifica o número de portas no intervalo a ser mapeado.

Valor de retorno

NdisMRegisterIoPortRange pode retornar um dos seguintes:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
O intervalo determinado de portas de E/S foi mapeado com êxito para que o valor em PortOffset 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 portas de E/S no registro falhou, possivelmente porque outro driver já reivindicou o intervalo para seu dispositivo. NdisMRegisterIoPortRange registra um erro se isso ocorrer.
NDIS_STATUS_RESOURCES
O intervalo de portas não pôde ser mapeado ou o NDIS não pôde alocar recursos para verificar se há conflitos de recursos de hardware no registro.
NDIS_STATUS_FAILURE
O tipo de barramento ou o número do barramento está fora do intervalo ou o InitialPort e NumberOfPorts eram inválidos (possivelmente não dentro do espaço de porta de E/S da plataforma atual).

Observações

Um driver de miniporto chama NdisMRegisterIoPortRange de sua função MiniportInitializeEx. MiniportInitializeEx deve chamar NdisMSetMiniportAttributes antes de chamar NdisMRegisterIoPortRange.

NdisMRegisterIoPortRange mapeia um intervalo de endereços de dispositivo relativo ao barramento que o driver de miniporto pode usar posteriormente para acessar um intervalo de portas de E/S em uma NIC chamando as funções NdisRawXxx. Uma chamada bem-sucedida declara o intervalo especificado de portas de E/S no registro para a NIC do chamador.

Como os parâmetros passados para o NdisRawxxx foram mapeados, essas funções são executadas significativamente mais rapidamente do que a NdisImmediate correspondente.. Portaxxx. Após uma chamada bem-sucedida para NdisMRegisterIoPortRange, um driver de miniporto não pode chamar nenhum dos NdisImmediate.. A portaxxx funções com endereços relativos ao barramento ou endereços virtuais mapeados dentro desse intervalo de portas de E/S.

Se sua chamada para NdisMRegisterIoPortRange falhar, MiniportInitializeEx deverá liberar todos os recursos já alocados para uma NIC e, em seguida, falhar na inicialização dessa NIC.

Drivers de NICs com registros de dispositivo na chamada de espaço de memória do host NdisMMapIoSpace e, posteriormente, o NdisRead/WriteRegisterxxx funções para acessar os registros NIC.

Requisitos

Requisito Valor
de cliente com suporte mínimo Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte NdisMRegisterIoPortRange (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte NdisMRegisterIoPortRange (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), NdisMRegisterIoPortRange(ndis)

Consulte também

MiniportInitializeEx

NdisMDeregisterIoPortRange

NdisMMapIoSpace

NdisRawReadPortBufferUchar

NdisRawReadPortBufferUlong

NdisRawReadPortBufferUshort

NdisRawReadPortUchar

NdisRawReadPortUlong

NdisRawReadPortUshort

NdisRawWritePortBufferUchar

NdisRawWritePortBufferUlong

NdisRawWritePortBufferUshort

NdisRawWritePortUchar

NdisRawWritePortUlong

NdisRawWritePortUshort

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort