Condividi tramite


Funzione NdisMRegisterIoPortRange (ndis.h)

NdisMRegisterIoPortRange configura l'accesso del driver alle porte di I/O del dispositivo con le funzioni NdisRawReadPortXxx e NdisRawwritePortXxx e richiede l'intervallo di indirizzi di porta di I/O nel Registro di sistema per la scheda di interfaccia di rete del driver.

Sintassi

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

Parametri

[out] PortOffset

Specifica una variabile fornita dal chiamante in cui questa funzione restituisce l'indirizzo virtuale di base mappato per l'intervallo di porte di I/O relativo al bus specificato da InitialPort e NumberOfPorts .

[in] MiniportAdapterHandle

Specifica l'input dell'handle per MiniportInitializeEx.

[in] InitialPort

Specifica l'indirizzo della porta di base relativa al bus per un intervallo di porte di cui eseguire il mapping.

[in] NumberOfPorts

Specifica il numero di porte nell'intervallo di cui eseguire il mapping.

Valore restituito

NdisMRegisterIoPortRange può restituire uno dei seguenti elementi:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
Il mapping dell'intervallo specificato di porte di I/O è stato eseguito correttamente in modo che il valore in PortOffset sia valido e che l'intervallo mappato sia stato richiesto nel Registro di sistema per la scheda di interfaccia di rete.
NDIS_STATUS_RESOURCE_CONFLICT
Un tentativo di attestazione dell'intervallo di porte di I/O nel Registro di sistema non è riuscito, probabilmente perché un altro driver ha già richiesto l'intervallo per il dispositivo. NdisMRegisterIoPortRange registra un errore in questo caso.
NDIS_STATUS_RESOURCES
Impossibile eseguire il mapping dell'intervallo di porte o NDIS non è stato possibile allocare risorse per verificare la presenza di conflitti tra risorse hardware nel Registro di sistema.
NDIS_STATUS_FAILURE
Il tipo di bus o il numero di bus non è compreso nell'intervallo oppure il valore InitialPort e NumberOfPorts specificato non sono validi (probabilmente non all'interno dello spazio della porta di I/O della piattaforma corrente).

Commenti

Un driver miniport chiama NdisMRegisterIoPortRange dalla funzione MiniportInitializeEx . MiniportInitializeEx deve chiamare NdisMSetMiniportAttributes prima di chiamare NdisMRegisterIoPortRange.

NdisMRegisterIoPortRange esegue il mapping di un intervallo di indirizzi del dispositivo relativo al bus che il driver miniport può usare successivamente per accedere a un intervallo di porte di I/O su una scheda di interfaccia di rete chiamando le funzioni NdisRawXxx . Una chiamata riuscita richiede l'intervallo specificato di porte di I/O nel Registro di sistema per la scheda di interfaccia di rete del chiamante.

Poiché i parametri passati a NdisRawXxx sono stati mappati, queste funzioni vengono eseguite in modo significativamente più veloce rispetto a NdisImmediate corrispondente. PortaXxx. Una volta eseguita una chiamata a NdisMRegisterIoPortRange, un driver miniport non può chiamare alcun elemento NdisImmediate. Funzioni PortaXxx con indirizzi relativi al bus o indirizzi virtuali mappati all'interno di un intervallo di porte di I/O di questo tipo.

Se la chiamata a NdisMRegisterIoPortRange ha esito negativo, MiniportInitializeEx deve rilasciare tutte le risorse già allocate per una scheda di interfaccia di rete e quindi l'inizializzazione non riesce per tale scheda di interfaccia di rete.

I driver delle schede di interfaccia di rete con i registri dei dispositivi nello spazio di memoria host chiamano NdisMMapIoSpace e, successivamente, le funzioni NdisRead/WriteRegisterXxx per accedere ai registri della scheda di interfaccia di rete.

Requisiti

Requisito Valore
Client minimo supportato Supportato per i driver NDIS 6.0 e NDIS 5.1 (vedere NdisMRegisterIoPortRange (NDIS 5.1)) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere NdisMRegisterIoPortRange (NDIS 5.1)) in Windows XP.
Piattaforma di destinazione Universale
Intestazione ndis.h (include Ndis.h)
Libreria Ndis.lib
IRQL PASSIVE_LEVEL
Regole di conformità DDI Irql_Miniport_Driver_Function(ndis), NdisMRegisterIoPortRange(ndis)

Vedi anche

MiniportInitializeEx

NdisMDeregisterIoPortRange

NdisMMapIoSpace

NdisRawReadPortBufferUchar

NdisRawReadPortBufferUlong

NdisRawReadPortBufferUshort

NdisRawReadPortUchar

NdisRawReadPortUlong

NdisRawReadPortUshort

NdisRawWritePortBufferUchar

NdisRawWritePortBufferUlong

NdisRawWritePortBufferUshort

NdisRawWritePortUchar

NdisRawWritePortUlong

NdisRawWritePortUshort

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort