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 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 serem mapeadas.

Retornar valor

NdisMRegisterIoPortRange pode retornar um dos seguintes:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
O intervalo fornecido 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 marcar o registro para conflitos de recursos de hardware.
NDIS_STATUS_FAILURE
O tipo de barramento ou o número do barramento estão fora do intervalo ou os InitialPort e NumberOfPorts fornecidos eram inválidos (possivelmente não dentro do espaço de porta de E/S da plataforma atual).

Comentários

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 o NdisImmediate correspondente. PortaXxx. Após uma chamada bem-sucedida para NdisMRegisterIoPortRange, um driver de miniporto não pode chamar nenhum dos NdisImmediate.. Funçõesxxx de porta com endereços relativos a barramento ou endereços virtuais mapeados dentro de um 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 no espaço de memória do host chamam NdisMMapIoSpace e, posteriormente, as funções NdisRead/WriteRegisterXxx para acessar os registros NIC.

Requisitos

Requisito Valor
Cliente mínimo com suporte 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.
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)

Confira também

MiniportInitializeEx

NdisMDeregisterIoPortRange

NdisMMapIoSpace

NdisRawReadPortBufferUchar

NdisRawReadPortBufferUlong

NdisRawReadPortBufferUshort

NdisRawReadPortUchar

NdisRawReadPortUlong

NdisRawReadPortUshort

NdisRawWritePortBufferUchar

NdisRawWritePortBufferUlong

NdisRawWritePortBufferUshort

NdisRawWritePortUchar

NdisRawWritePortUlong

NdisRawWritePortUshort

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort