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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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) |