Linee guida per le notifiche degli indirizzi IP del driver MB miniport
I driver miniport MB che specificano EnableDhcp uguale a zero nei file INF possono usare l'helper IP e le funzioni associate in modalità kernel per creare, modificare ed eliminare l'indirizzo IP:
Per usare le funzioni helper IP in modalità kernel, i driver miniport devono includere il file di intestazione Netioapi.h e il collegamento a Netio.lib.
Quando i driver miniport specificano EnableDhcp uguale a zero, sono tenuti a eseguire le operazioni seguenti per notificare al servizio MB uno degli eventi seguenti:
Impostare l'indirizzo IP per l'interfaccia MB
Impostare l'indirizzo del gateway predefinito
Aggiornare gli indirizzi DNS
Gli indirizzi IP e i gateway predefiniti impostati utilizzando l'API IP Helper mantengono le loro configurazioni attraverso eventi di connessione o disconnessione di rete, o entrambi. Pertanto, se il nuovo indirizzo IP o gateway predefinito o entrambi i valori sono diversi dai valori attualmente impostati, il driver miniport deve prima cancellare i valori precedenti prima di impostare nuovi valori in un evento di connessione di rete.
Nota I driver Miniport possono trovare i LUID e Index dell'interfaccia MB dai membri NetLuid o IfIndex della struttura NDIS_MINIPORT_INIT_PARAMETERS passata alla funzione MiniportInitializeEx del driver miniport.
Reimpostazione dell'indirizzo IP e dell'indirizzo del gateway
Alcune modifiche allo stack TCP/IP, ad esempio il caricamento di un driver di filtro obbligatorio, possono rimuovere gli indirizzi IP e gateway impostati dalle funzioni helper IP. I driver Miniport devono reimpostare gli indirizzi IP e gateway se le modifiche apportate allo stack TCP/IP rimuovono le impostazioni.
I driver Miniport devono usare la procedura seguente per ricevere una notifica quando gli indirizzi vengono rimossi e devono essere reimpostati di nuovo.
Durante l'inizializzazione del driver, i driver miniport devono specificare una funzione di callback per registrarsi alle notifiche di modifica dell'interfaccia IP usando NotifyIpInterfaceChange. Windows chiamerà la funzione ogni volta che viene aggiunta, eliminata o modificata un'interfaccia IP.
Durante l'inizializzazione dell'adattatore , i driver miniport devono salvare nel contesto della scheda locale del driver miniport il valore LUID dalla struttura NDIS_MINIPORT_INIT_PARAMETERS passata alla funzione miniportInitializeEx del driver miniport. Il valore contiene il NetLuid che identifica l'interfaccia dell'adattatore, usata nella richiamata di notifica.
Nel callback di notifica , Windows passa i parametri seguenti alla funzione di notifica registrata con NotifyIpInterfaceChange:
- Un puntatore a una struttura MIB_IPINTERFACE_ROW, che contiene il NetLuid dell'interfaccia dell'adattatore miniporta.
- Tipo di notifica, che può essere MibAddInstance, MibDeleteInstance o MibParameterNotification.
I driver Miniport devono reimpostare gli indirizzi IP e gateway quando la scheda si trova in uno stato connesso e il tipo di notifica è MibAddInstancee il NetLuid in MIB_IPINTERFACE_ROW corrisponde a una delle schede del driver miniport, che è stata salvata durante l'inizializzazione dell'adattatore.
I driver Miniport devono quindi seguire le procedure Impostazione dell'indirizzo IP per l'interfaccia MB e Impostazione degli indirizzi gateway predefiniti per reimpostare i rispettivi indirizzi.
Durante driver scaricare, i driver miniport devono annullare la registrazione della funzione di callback di notifica usando la funzione di callback di notifica CancelMibChangeNotify2 funzione helper IP.
Impostazione dell'indirizzo IP per l'interfaccia MB
Per impostare un indirizzo IPv4, seguire questa procedura. È possibile usare una funzionalità simile dell'helper IP per impostare un indirizzo IPv6.
Usare la funzione GetUnicastIpAddressTable helper IP per trovare tutte le voci di indirizzo IP nel sistema.
Per ogni voce il cui valore InterfaceLuid corrisponde al InterfaceLuid dell'interfaccia MB:
- Cercare la voce dell'indirizzo IP che corrisponde all'indirizzo IP usato nel collegamento precedente. Al primo collegamento, non è previsto un indirizzo IP precedente.
- Se il nuovo indirizzo IP è diverso dall'indirizzo IP precedente, eliminare la voce dell'indirizzo IP per gli indirizzi IP delle connessioni precedenti usando la funzione DeleteUnicastIpAddressEntry di supporto IP.
- Se il nuovo indirizzo IP corrisponde all'indirizzo IP precedente, verificare che la voce desiderata esista già.
Se il driver miniport non ha trovato l'entry per l'indirizzo IP desiderato nel ciclo precedente, dovrebbe aggiungere una nuova entry.
Utilizzare la funzione ausiliaria IP InitializeUnicastIpAddressEntry per inizializzare una struttura MIB_UNICASTIPADDRESS_ROW e impostare i seguenti membri della struttura:
- Impostare i membri InterfaceLuid o InterfaceIndex, come appropriato.
- Impostare il membro OnlinePrefixLength. Questo è il numero di bit che hanno un valore pari a uno nella subnet mask. Ad esempio, se la subnet mask è 255.255.255.0, OnlinePrefixLength deve essere 24.
- Impostare il membro indirizzo .
- Impostare il membro PrefixOrigin su IpPrefixOriginManual.
Passa la struttura inizializzata di MIB_UNICASTADDRESS_ROW alla funzione IP Helper CreateUnicastIpAddressEntry per creare la voce dell'indirizzo IP.
Impostazione dell'indirizzo gateway predefinito
Per impostare un indirizzo del gateway IPv4, usare la procedura seguente. È possibile usare una funzionalità simile dell'helper IP per impostare un indirizzo gateway IPv6.
Usare GetIpForwardTable2 funzione helper IP per ottenere tutte le voci di routing nel sistema.
Per ogni voce il cui valore InterfaceLuid corrisponde al valore InterfaceLuid dell'interfaccia MB e DestinationPrefix è "0.0.0.0/0", chiamare la funzione DeleteIpForwardEntry2 IP Helper per eliminare la route se NextHop non è uguale al nuovo indirizzo del gateway. In caso contrario, la voce di routing è già presente nel sistema.
Se il driver miniport non ha trovato la voce di routing desiderata nel ciclo precedente, deve aggiungere una nuova voce usando la funzione IP Helper InitializeIpForwardEntry per inizializzare una struttura MIB_IPFORWARD_ROW2. Inizializzare i membri seguenti della struttura:
InterfaceLuid o InterfaceIndex .
Impostare DestinationPrefix su 0.0.0.0/0 per il gateway predefinito. (Prefisso = 0.0.0.0 e LunghezzaPrefisso = 0)
Impostare NextHop sull'indirizzo IP del gateway predefinito.
Gli altri membri vengono impostati su valori predefiniti durante l'inizializzazione. I driver Miniport devono usare i valori predefiniti per tali membri.
Passare la struttura MIB_IPFORWARD_ROW2 alla funzione IP Helper CreateIpForwardEntry2 per impostare un nuovo indirizzo gateway predefinito.
Per impostare gli indirizzi DNS
- Impostare la chiave del Registro di sistema NameServer come descritto in MB aggiornamenti DNS per notificare a Windows gli indirizzi DNS aggiornati.