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 |
---|---|
|
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. |
|
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 verificar se há conflitos de recursos de hardware no registro. |
|
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) |