Condividi tramite


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

  1. 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 chiamata pInfo.

    DWORD dwRetVal;
    
    
  2. Se DHCP è abilitato, chiamare la funzioneipReleaseAddresspassando la variabile IP_ADAPTER_INDEX_MAPAdapter come parametro. Verificare la presenza di errori generali e restituirne il valore al DWORD variabile dwRetVal (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

  1. 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 chiamata pInfo.

    DWORD dwRetVal;
    
    
  2. Chiamare la funzioneipRenewAddresspassando la variabile IP_ADAPTER_INDEX_MAPAdapter come parametro. Verificare la presenza di errori generali e restituirne il valore al DWORD variabile dwRetVal (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