Condividi tramite


Gestire i lease DHCP con IpReleaseAddress, IpRenewAddress

Le funzioni IpReleaseAddress e IpRenewAddress vengono usate per rilasciare e rinnovare il lease DHCP (Dynamic Host Configuration Protocol) corrente. La funzione IpReleaseAddress rilascia in precedenza un indirizzo IPv4 ottenuto 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 IpReleaseAddress e 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 funzione IpRenewAddress , la richiesta client DHCP viene inviata al server DHCP che ha rilasciato il lease DHCP iniziale. Questo server DHCP potrebbe non essere disponibile o la richiesta DHCP potrebbe non riuscire. Quando un host ha ottenuto in precedenza un lease DHCP e IpReleaseAddress viene chiamato 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 IpRenewAddress richiedono che DHCP sia abilitato per eseguire correttamente.

 

La funzione IpReleaseAddress accetta un puntatore a una struttura IP_ADAPTER_INDEX_MAP come solo parametro. Per ottenere questo parametro, chiamare prima GetInterfaceInfo. Per informazioni sulla funzione GetInterfaceInfo , vedere Gestione delle interfacce tramite GetInterfaceInfo.

Per usare IpReleaseAddress

  1. Ottenere un puntatore a una struttura di IP_ADAPTER_INDEX_MAP usando la funzione GetInterfaceInfo . Per informazioni sulla funzione GetInterfaceInfo, vedere Gestione delle interfacce tramite GetInterfaceInfo. Creare un oggetto dwRetValDWORD (usato per il controllo degli errori). Si presuppone che la variabile restituita da GetInterfaceInfo sia denominata pInfo.

    DWORD dwRetVal;
    
    
  2. Se DHCP è abilitato, chiamare la funzione IpReleaseAddress, passando la variabile AdapterIP_ADAPTER_INDEX_MAP come parametro. Verificare gli errori generali e restituire il relativo valore alla variabile dwRetValDWORD (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 di 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 di IP_ADAPTER_INDEX_MAP usando la funzione GetInterfaceInfo . Per informazioni sulla funzione GetInterfaceInfo , vedere Gestione delle interfacce tramite GetInterfaceInfo. Dichiarare un oggetto dwRetValDWORD (usato per il controllo degli errori) se questa variabile non è stata dichiarata. Si presuppone che la variabile restituita da GetInterfaceInfo sia denominata pInfo.

    DWORD dwRetVal;
    
    
  2. Chiamare la funzione IpRenewAddress, passando la variabile AdapterIP_ADAPTER_INDEX_MAP come parametro. Verificare gli errori generali e restituire il relativo valore alla variabile dwRetValDWORD (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