Partager via


IP_ADAPTER_INFO structure (iptypes.h)

La structure IP_ADAPTER_INFO contient des informations sur une carte réseau particulière sur l’ordinateur local.

Syntaxe

typedef struct _IP_ADAPTER_INFO {
  struct _IP_ADAPTER_INFO *Next;
  DWORD                   ComboIndex;
  char                    AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
  char                    Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
  UINT                    AddressLength;
  BYTE                    Address[MAX_ADAPTER_ADDRESS_LENGTH];
  DWORD                   Index;
  UINT                    Type;
  UINT                    DhcpEnabled;
  PIP_ADDR_STRING         CurrentIpAddress;
  IP_ADDR_STRING          IpAddressList;
  IP_ADDR_STRING          GatewayList;
  IP_ADDR_STRING          DhcpServer;
  BOOL                    HaveWins;
  IP_ADDR_STRING          PrimaryWinsServer;
  IP_ADDR_STRING          SecondaryWinsServer;
  time_t                  LeaseObtained;
  time_t                  LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;

Membres

Next

Type : struct _IP_ADAPTER_INFO*

Pointeur vers l’adaptateur suivant dans la liste des adaptateurs.

ComboIndex

Type : DWORD

Réservé.

AdapterName[MAX_ADAPTER_NAME_LENGTH + 4]

Type : char[MAX_ADAPTER_NAME_LENGTH + 4]

Chaîne de caractères ANSI du nom de l’adaptateur.

Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]

Type : char[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]

Chaîne de caractères ANSI qui contient la description de l’adaptateur.

AddressLength

Type : UINT

Longueur, en octets, de l’adresse matérielle de l’adaptateur.

Address[MAX_ADAPTER_ADDRESS_LENGTH]

Type : BYTE[MAX_ADAPTER_ADDRESS_LENGTH]

Adresse matérielle de l’adaptateur représenté sous la forme d’un tableau BYTE .

Index

Type : DWORD

Index de l’adaptateur.

L’index de l’adaptateur peut changer lorsqu’un adaptateur est désactivé, puis activé, ou dans d’autres circonstances, et ne doit pas être considéré comme persistant.

Type

Type : UINT

Type d’adaptateur. Les valeurs possibles pour le type d’adaptateur sont répertoriées dans le fichier d’en-tête Ipifcons.h .

Le tableau ci-dessous répertorie les valeurs courantes pour le type d’adaptateur, bien que d’autres valeurs soient possibles sur Windows Vista et versions ultérieures.

Valeur Signification
MIB_IF_TYPE_OTHER
1
Un autre type d’interface réseau.
MIB_IF_TYPE_ETHERNET
6
Une interface réseau Ethernet.
IF_TYPE_ISO88025_TOKENRING
9
MIB_IF_TYPE_TOKENRING
MIB_IF_TYPE_PPP
23
Interface réseau PPP.
MIB_IF_TYPE_LOOPBACK
24
Interface réseau de bouclage logiciel.
MIB_IF_TYPE_SLIP
28
Une interface réseau ATM.
IF_TYPE_IEEE80211
71
Interface réseau sans fil IEEE 802.11.
Note Ce type d’adaptateur est retourné sur Windows Vista et versions ultérieures. Sur Windows Server 2003 et Windows XP , une interface réseau sans fil IEEE 802.11 retourne un type d’adaptateur de MIB_IF_TYPE_ETHERNET.
 

DhcpEnabled

Type : UINT

Valeur d’option qui spécifie si le protocole DHCP (Dynamic Host Configuration Protocol) est activé pour cet adaptateur.

CurrentIpAddress

Type : PIP_ADDR_STRING

Réservé.

IpAddressList

Type : IP_ADDR_STRING

Liste des adresses IPv4 associées à cet adaptateur représentée sous la forme d’une liste liée de structures IP_ADDR_STRING . Plusieurs adresses IPv4 peuvent être affectées à un adaptateur.

GatewayList

Type : IP_ADDR_STRING

Adresse IPv4 de la passerelle pour cet adaptateur représentée sous la forme d’une liste liée de structures IP_ADDR_STRING . Plusieurs adresses de passerelle IPv4 peuvent être affectées à un adaptateur. Cette liste contient généralement une seule entrée pour l’adresse IPv4 de la passerelle par défaut pour cet adaptateur.

DhcpServer

Type : IP_ADDR_STRING

Adresse IPv4 du serveur DHCP pour cet adaptateur représentée sous la forme d’une liste liée de structures IP_ADDR_STRING . Cette liste contient une seule entrée pour l’adresse IPv4 du serveur DHCP pour cette carte. La valeur 255.255.255.255 indique que le serveur DHCP n’a pas pu être atteint ou est en cours d’atteinte.

Ce membre est valide uniquement lorsque le membre DhcpEnabled est différent de zéro.

HaveWins

Type : BOOL

Valeur d’option qui spécifie si cet adaptateur utilise le service WINS (Windows Internet Name Service).

PrimaryWinsServer

Type : IP_ADDR_STRING

Adresse IPv4 du serveur WINS principal représenté sous la forme d’une liste liée de structures IP_ADDR_STRING . Cette liste contient une seule entrée pour l’adresse IPv4 du serveur WINS principal pour cet adaptateur.

Ce membre est valide uniquement lorsque le membre HaveWins a la valeur TRUE.

SecondaryWinsServer

Type : IP_ADDR_STRING

Adresse IPv4 du serveur WINS secondaire représenté sous la forme d’une liste liée de structures IP_ADDR_STRING . Plusieurs adresses de serveur WINS secondaires peuvent être affectées à un adaptateur.

Ce membre est valide uniquement lorsque le membre HaveWins a la valeur TRUE.

LeaseObtained

Type : time_t

Heure à laquelle le bail DHCP actuel a été obtenu.

Ce membre est valide uniquement lorsque le membre DhcpEnabled est différent de zéro.

LeaseExpires

Type : time_t

Heure à laquelle le bail DHCP actuel expire.

Ce membre est valide uniquement lorsque le membre DhcpEnabled est différent de zéro.

Notes

La structure IP_ADAPTER_INFO est limitée aux informations IPv4 sur une carte réseau particulière sur l’ordinateur local. La structure IP_ADAPTER_INFO est récupérée en appelant la fonction GetAdaptersInfo .

Lorsque vous utilisez Visual Studio 2005 et versions ultérieures, le type de données time_t est défini par défaut sur un type de données de 8 octets, et non sur le type de données de 4 octets utilisé pour les membres LeaseObtained et LeaseExpires sur une plateforme 32 bits. Pour utiliser correctement la structure IP_ADAPTER_INFO sur une plateforme 32 bits, définissez _USE_32BIT_TIME_T (utilisez -D _USE_32BIT_TIME_T comme option, par exemple) lors de la compilation de l’application pour forcer le type de données time_t à un type de données de 4 octets.

Pour une utilisation sur Windows XP et versions ultérieures , la structure IP_ADAPTER_ADDRESSES contient à la fois des informations IPv4 et IPv6. La fonction GetAdaptersAddresses récupère les informations de l’adaptateur IPv4 et IPv6.

Exemples

Cet exemple récupère les informations de l’adaptateur et imprime différentes propriétés de chaque adaptateur.

#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, "IPHLPAPI.lib")

#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))

/* Note: could also use malloc() and free() */

int __cdecl main()
{

    /* Declare and initialize variables */

// It is possible for an adapter to have multiple
// IPv4 addresses, gateways, and secondary WINS servers
// assigned to the adapter. 
//
// Note that this sample code only prints out the 
// first entry for the IP address/mask, and gateway, and
// the primary and secondary WINS server for each adapter. 

    PIP_ADAPTER_INFO pAdapterInfo;
    PIP_ADAPTER_INFO pAdapter = NULL;
    DWORD dwRetVal = 0;
    UINT i;

/* variables used to print DHCP time info */
    struct tm newtime;
    char buffer[32];
    errno_t error;

    ULONG ulOutBufLen = sizeof (IP_ADAPTER_INFO);
    pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(sizeof (IP_ADAPTER_INFO));
    if (pAdapterInfo == NULL) {
        printf("Error allocating memory needed to call GetAdaptersinfo\n");
        return 1;
    }
// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
    if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
        FREE(pAdapterInfo);
        pAdapterInfo = (IP_ADAPTER_INFO *) MALLOC(ulOutBufLen);
        if (pAdapterInfo == NULL) {
            printf("Error allocating memory needed to call GetAdaptersinfo\n");
            return 1;
        }
    }

    if ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) {
        pAdapter = pAdapterInfo;
        while (pAdapter) {
            printf("\tComboIndex: \t%d\n", pAdapter->ComboIndex);
            printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
            printf("\tAdapter Desc: \t%s\n", pAdapter->Description);
            printf("\tAdapter Addr: \t");
            for (i = 0; i < pAdapter->AddressLength; i++) {
                if (i == (pAdapter->AddressLength - 1))
                    printf("%.2X\n", (int) pAdapter->Address[i]);
                else
                    printf("%.2X-", (int) pAdapter->Address[i]);
            }
            printf("\tIndex: \t%d\n", pAdapter->Index);
            printf("\tType: \t");
            switch (pAdapter->Type) {
            case MIB_IF_TYPE_OTHER:
                printf("Other\n");
                break;
            case MIB_IF_TYPE_ETHERNET:
                printf("Ethernet\n");
                break;
            case MIB_IF_TYPE_TOKENRING:
                printf("Token Ring\n");
                break;
            case MIB_IF_TYPE_FDDI:
                printf("FDDI\n");
                break;
            case MIB_IF_TYPE_PPP:
                printf("PPP\n");
                break;
            case MIB_IF_TYPE_LOOPBACK:
                printf("Lookback\n");
                break;
            case MIB_IF_TYPE_SLIP:
                printf("Slip\n");
                break;
            default:
                printf("Unknown type %ld\n", pAdapter->Type);
                break;
            }

            printf("\tIP Address: \t%s\n",
                   pAdapter->IpAddressList.IpAddress.String);
            printf("\tIP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String);

            printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
            printf("\t***\n");

            if (pAdapter->DhcpEnabled) {
                printf("\tDHCP Enabled: Yes\n");
                printf("\t  DHCP Server: \t%s\n",
                       pAdapter->DhcpServer.IpAddress.String);

                printf("\t  Lease Obtained: ");
                /* Display local time */
                error = _localtime32_s(&newtime, (__time32_t*) &pAdapter->LeaseObtained);
                if (error)
                    printf("Invalid Argument to _localtime32_s\n");
                else {
                    // Convert to an ASCII representation 
                    error = asctime_s(buffer, 32, &newtime);
                    if (error)
                        printf("Invalid Argument to asctime_s\n");
                    else
                        /* asctime_s returns the string terminated by \n\0 */
                        printf("%s", buffer);
                }

                printf("\t  Lease Expires:  ");
                error = _localtime32_s(&newtime, (__time32_t*) &pAdapter->LeaseExpires);
                if (error)
                    printf("Invalid Argument to _localtime32_s\n");
                else {
                    // Convert to an ASCII representation 
                    error = asctime_s(buffer, 32, &newtime);
                    if (error)
                        printf("Invalid Argument to asctime_s\n");
                    else
                        /* asctime_s returns the string terminated by \n\0 */
                        printf("%s", buffer);
                }
            } else
                printf("\tDHCP Enabled: No\n");

            if (pAdapter->HaveWins) {
                printf("\tHave Wins: Yes\n");
                printf("\t  Primary Wins Server:    %s\n",
                       pAdapter->PrimaryWinsServer.IpAddress.String);
                printf("\t  Secondary Wins Server:  %s\n",
                       pAdapter->SecondaryWinsServer.IpAddress.String);
            } else
                printf("\tHave Wins: No\n");
            pAdapter = pAdapter->Next;
            printf("\n");
        }
    } else {
        printf("GetAdaptersInfo failed with error: %d\n", dwRetVal);

    }
    if (pAdapterInfo)
        FREE(pAdapterInfo);

    return 0;
}

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
En-tête iptypes.h (include Iphlpapi.h)

Voir aussi

GetAdaptersAddresses

GetAdaptersInfo

Page d’accueil de l’assistance IP

Structures d’assistance IP

IP_ADAPTER_ADDRESSES

IP_ADDRESS_STRING

IP_ADDR_STRING