Gestire le locazioni DHCP con IpReleaseAddress, IpRenewAddress
Le funzioni IpReleaseAddress e IpRenewAddress vengono usate per rilasciare e rinnovare il lease DHCP (Dynamic Host Configuration Protocol). La funzione IpReleaseAddress rilascia un indirizzo IPv4 ottenuto in precedenza tramite DHCP. La funzione IpRenewAddress rinnova un lease su un indirizzo IPv4 ottenuto in precedenza tramite DHCP. È comune usare queste due funzioni insieme, rilasciando prima il lease con una chiamata a IpReleaseAddresse quindi rinnovando il lease con una chiamata alla funzione IpRenewAddress.
Quando un client DHCP ha ottenuto in precedenza un lease DHCP e IpReleaseAddress non viene chiamato prima della funzioneIpRenewAddress, la richiesta client DHCP viene inviata al server DHCP che ha emesso il lease DHCP iniziale. Questo server DHCP potrebbe non essere disponibile o la richiesta DHCP potrebbe non riuscire. Quando un host ha precedentemente ottenuto un lease DHCP e la funzione IpReleaseAddress viene chiamata prima della funzione IpRenewAddress, il client DHCP rilascia prima l'indirizzo IP ottenuto e invia una richiesta client DHCP per una risposta da qualsiasi server DHCP disponibile.
Nota
Le funzioni IpReleaseAddress e ipRenewAddressrichiedono che DHCP sia abilitato per l'esecuzione corretta.
La funzione IpReleaseAddress accetta un puntatore a una struttura IP_ADAPTER_INDEX_MAP come unico parametro. Per ottenere questo parametro, chiamare prima GetInterfaceInfo. Per assistenza con la funzione GetInterfaceInfo, vedere Managing Interfaces Using GetInterfaceInfo.
Per usare IpReleaseAddress
Ottenere un puntatore alla struttura IP_ADAPTER_INDEX_MAP utilizzando la funzione GetInterfaceInfo. Per informazioni sulla funzione GetInterfaceInfo, vedere Managing Interfaces Using GetInterfaceInfo). Crea un oggetto DWORD
dwRetVal
(utilizzato per il controllo degli errori). Si presuppone che la variabile restituita da GetInterfaceInfo venga chiamatapInfo
.DWORD dwRetVal;
Se DHCP è abilitato, chiamare la funzioneipReleaseAddresspassando la variabile IP_ADAPTER_INDEX_MAP
Adapter
come parametro. Verificare la presenza di errori generali e restituirne il valore al DWORD variabiledwRetVal
(per un controllo degli errori più completo).Nota
La funzione GetAdaptersInfo restituisce un parametro che può essere usato per verificare se DHCP è abilitato prima di chiamare queste funzioni. Per informazioni su GetAdaptersInfo, vedere Gestione delle schede di rete tramite GetAdaptersInfo.
if ((dwRetVal = IpReleaseAddress(&pInfo->Adapter[0])) == NO_ERROR) { printf("Ip Release succeeded.\n"); }
Nota
È comune usare queste due funzioni insieme, chiamando la funzione IpReleaseAddress e quindi chiamando la funzione IpRenewAddress, passando la stessa struttura del parametro a entrambe le funzioni. La procedura seguente presuppone che le funzioni non vengano usate insieme; Tuttavia, se le funzioni vengono usate insieme, ignorare il passaggio 1.
Per usare ipRenewAddress
Ottenere un puntatore a una struttura IP_ADAPTER_INDEX_MAP utilizzando la funzione GetInterfaceInfo. Per informazioni sulla funzione GetInterfaceInfo, vedere Gestione delle interfacce utilizzando GetInterfaceInfo). Dichiarare un DWORD oggetto
dwRetVal
(usato per il controllo degli errori) se questa variabile non è stata dichiarata. Si presuppone che la variabile restituita da GetInterfaceInfo venga chiamatapInfo
.DWORD dwRetVal;
Chiamare la funzioneipRenewAddresspassando la variabile IP_ADAPTER_INDEX_MAP
Adapter
come parametro. Verificare la presenza di errori generali e restituirne il valore al DWORD variabiledwRetVal
(per un controllo degli errori più completo).if ((dwRetVal = IpRenewAddress(&pInfo->Adapter[0])) == NO_ERROR) { printf("Ip Renew succeeded.\n"); }
Passaggio successivo: gestione degli indirizzi IP tramite AddIPAddress e DeleteIPAddress
Passaggio precedente: gestione degli indirizzi IP tramite getIpAddrTable