struttura IP_ADAPTER_ADDRESSES_LH (iptypes.h)
La struttura IP_ADAPTER_ADDRESSES è il nodo di intestazione per un elenco collegato di indirizzi per una scheda specifica. Questa struttura può essere usata contemporaneamente come parte di un elenco collegato di strutture IP_ADAPTER_ADDRESSES .
Sintassi
typedef struct _IP_ADAPTER_ADDRESSES_LH {
union {
ULONGLONG Alignment;
struct {
ULONG Length;
IF_INDEX IfIndex;
};
};
struct _IP_ADAPTER_ADDRESSES_LH *Next;
PCHAR AdapterName;
PIP_ADAPTER_UNICAST_ADDRESS_LH FirstUnicastAddress;
PIP_ADAPTER_ANYCAST_ADDRESS_XP FirstAnycastAddress;
PIP_ADAPTER_MULTICAST_ADDRESS_XP FirstMulticastAddress;
PIP_ADAPTER_DNS_SERVER_ADDRESS_XP FirstDnsServerAddress;
PWCHAR DnsSuffix;
PWCHAR Description;
PWCHAR FriendlyName;
BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
ULONG PhysicalAddressLength;
union {
ULONG Flags;
struct {
ULONG DdnsEnabled : 1;
ULONG RegisterAdapterSuffix : 1;
ULONG Dhcpv4Enabled : 1;
ULONG ReceiveOnly : 1;
ULONG NoMulticast : 1;
ULONG Ipv6OtherStatefulConfig : 1;
ULONG NetbiosOverTcpipEnabled : 1;
ULONG Ipv4Enabled : 1;
ULONG Ipv6Enabled : 1;
ULONG Ipv6ManagedAddressConfigurationSupported : 1;
};
};
ULONG Mtu;
IFTYPE IfType;
IF_OPER_STATUS OperStatus;
IF_INDEX Ipv6IfIndex;
ULONG ZoneIndices[16];
PIP_ADAPTER_PREFIX_XP FirstPrefix;
ULONG64 TransmitLinkSpeed;
ULONG64 ReceiveLinkSpeed;
PIP_ADAPTER_WINS_SERVER_ADDRESS_LH FirstWinsServerAddress;
PIP_ADAPTER_GATEWAY_ADDRESS_LH FirstGatewayAddress;
ULONG Ipv4Metric;
ULONG Ipv6Metric;
IF_LUID Luid;
SOCKET_ADDRESS Dhcpv4Server;
NET_IF_COMPARTMENT_ID CompartmentId;
NET_IF_NETWORK_GUID NetworkGuid;
NET_IF_CONNECTION_TYPE ConnectionType;
TUNNEL_TYPE TunnelType;
SOCKET_ADDRESS Dhcpv6Server;
BYTE Dhcpv6ClientDuid[MAX_DHCPV6_DUID_LENGTH];
ULONG Dhcpv6ClientDuidLength;
ULONG Dhcpv6Iaid;
PIP_ADAPTER_DNS_SUFFIX FirstDnsSuffix;
} IP_ADAPTER_ADDRESSES_LH, *PIP_ADAPTER_ADDRESSES_LH;
Members
Alignment
Tipo: ULONGLONG
Riservato. Utilizzato dal compilatore per allineare la struttura.
Length
Tipo: ULONG
Lunghezza, in byte, di questa struttura. Si noti che la lunghezza della struttura IP_ADAPTER_ADDRESSES è cambiata in Windows XP con SP1 e versioni successive e anche in Windows Vista e versioni successive.
IfIndex
Tipo: DWORD
Indice dell'interfaccia IPv4 a cui sono associati questi indirizzi. In Windows Server 2003 e Windows XP questo membro è zero se IPv4 non è disponibile nell'interfaccia.
Next
Tipo: struct _IP_ADAPTER_ADDRESSES*
Puntatore alla struttura degli indirizzi dell'adattatore successivo nell'elenco.
AdapterName
Tipo: PCHAR
Matrice di caratteri che contiene il nome dell'adattatore a cui sono associati questi indirizzi. A differenza del nome descrittivo di un adattatore, il nome dell'adattatore specificato in AdapterName è permanente e non può essere modificato dall'utente.
FirstUnicastAddress
Tipo: PIP_ADAPTER_UNICAST_ADDRESS
Puntatore alla prima struttura IP_ADAPTER_UNICAST_ADDRESS in un elenco collegato di indirizzi UNICAST IP per l'adattatore.
FirstAnycastAddress
Tipo: PIP_ADAPTER_ANYCAST_ADDRESS
Puntatore alla prima struttura IP_ADAPTER_ANYCAST_ADDRESS in un elenco collegato di indirizzi anycast IP per l'adattatore.
FirstMulticastAddress
Tipo: PIP_ADAPTER_MULTICAST_ADDRESS
Puntatore alla prima struttura IP_ADAPTER_MULTICAST_ADDRESS in un elenco di indirizzi multicast IP per l'adattatore.
FirstDnsServerAddress
Tipo: PIP_ADAPTER_DNS_SERVER_ADDRESS
Puntatore alla prima struttura IP_ADAPTER_DNS_SERVER_ADDRESS in un elenco collegato di indirizzi del server DNS per la scheda.
DnsSuffix
Tipo: PWCHAR
Suffisso DNS (Domain Name System) associato a questa scheda.
Description
Tipo: PWCHAR
Descrizione dell'adattatore. Questo membro è di sola lettura.
FriendlyName
Tipo: PWCHAR
Nome descrittivo per l'adapter. Ad esempio: "Connessione area locale 1". Questo nome viene visualizzato in contesti quali il programma della riga di comando ipconfig e la cartella Connection. Questo membro è di sola lettura e non può essere modificato usando alcuna funzione helper IP.
Questo membro è il campo ifAlias usato da NDIS come descritto in RFC 2863. Il campo ifAlias può essere impostato da un provider di interfaccia NDIS quando viene installato il driver NDIS. Per i driver miniport NDIS, questo campo viene impostato da NDIS.
PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH]
Tipo: BYTE[MAX_ADAPTER_ADDRESS_LENGTH]
Indirizzo mac (Media Controllo di accesso) per l'adattatore. Ad esempio, in una rete Ethernet questo membro specifica l'indirizzo hardware Ethernet.
PhysicalAddressLength
Tipo: DWORD
Lunghezza, in byte, dell'indirizzo specificato nel membro PhysicalAddress . Per le interfacce che non dispongono di un livello di collegamento dati, questo valore è zero.
Flags
Tipo: DWORD
Set di flag che specificano varie impostazioni per l'adattatore. Questi valori sono definiti nel file di intestazione Iptypes.h . Sono possibili combinazioni di questi bit di flag.
DdnsEnabled
RegisterAdapterSuffix
Dhcpv4Enabled
ReceiveOnly
NoMulticast
Ipv6OtherStatefulConfig
NetbiosOverTcpipEnabled
Ipv4Enabled
Ipv6Enabled
Ipv6ManagedAddressConfigurationSupported
Mtu
Tipo: DWORD
Dimensione massima dell'unità di trasmissione (MTU), espressa in byte.
IfType
Tipo: DWORD
Tipo di interfaccia definito dall'autorità IANA (Internet Assigned Names Authority). I valori possibili per il tipo di interfaccia sono elencati nel file di intestazione Ipifcons.h .
La tabella seguente elenca i valori comuni per il tipo di interfaccia anche se sono possibili molti altri valori.
Valore | Significato |
---|---|
|
Un altro tipo di interfaccia di rete. |
|
Interfaccia di rete Ethernet. |
|
Interfaccia di rete dell'anello del token. |
|
Interfaccia di rete PPP. |
|
Interfaccia di rete di loopback software. |
|
Interfaccia di rete ATM. |
|
Interfaccia di rete wireless IEEE 802.11.
In Windows Vista e versioni successive, le schede di rete wireless vengono segnalate come IF_TYPE_IEEE80211. Nelle versioni precedenti di Windows, le schede di rete wireless vengono segnalate come IF_TYPE_ETHERNET_CSMACD. In Windows XP con SP3 e in Windows XP con SP2 x86 con l'API LAN wireless per Windows XP con SP2 installata, la funzione WlanEnumInterfaces può essere usata per enumerare le interfacce wireless nel computer locale. |
|
Interfaccia di rete incapsulamento del tipo di tunnel. |
|
Interfaccia di rete del bus seriale IEEE 1394 (Firewire). |
OperStatus
Tipo: IF_OPER_STATUS
Stato operativo per l'interfaccia come definito in RFC 2863. Per altre informazioni, vedere http://www.ietf.org/rfc/rfc2863.txt. Questo membro può essere uno dei valori del tipo di enumerazione IF_OPER_STATUS definito nel file di intestazione Iftypes.h . In Windows Vista e versioni successive i file di intestazione sono stati riorganizzati e questa enumerazione è definita nel file di intestazione Ifdef.h .
Ipv6IfIndex
Tipo: DWORD
Indice dell'interfaccia per l'indirizzo IP IPv6. Questo membro è zero se IPv6 non è disponibile nell'interfaccia.
ZoneIndices[16]
Tipo: DWORD[16]
Matrice di ID ambito per ogni livello di ambito usato per la composizione di strutture sockaddr . L'enumerazione SCOPE_LEVEL viene usata per indicizzare la matrice. In IPv6 è possibile assegnare a una singola interfaccia più indirizzi multicast IPv6 in base a un ID ambito.
FirstPrefix
Tipo: PIP_ADAPTER_PREFIX
Puntatore alla prima struttura IP_ADAPTER_PREFIX in un elenco collegato di prefissi dell'adattatore IP per l'adattatore.
TransmitLinkSpeed
Tipo: ULONG64
Velocità corrente in bit al secondo del collegamento di trasmissione per l'adattatore.
ReceiveLinkSpeed
Tipo: ULONG64
Velocità corrente in bit al secondo del collegamento di ricezione per l'adattatore.
FirstWinsServerAddress
Tipo: PIP_ADAPTER_WINS_SERVER_ADDRESS_LH
Puntatore alla prima struttura IP_ADAPTER_WINS_SERVER_ADDRESS in un elenco collegato di indirizzi server WINS (Internet Name Service) di Windows per la scheda.
FirstGatewayAddress
Tipo: PIP_ADAPTER_GATEWAY_ADDRESS_LH
Puntatore alla prima struttura IP_ADAPTER_GATEWAY_ADDRESS in un elenco collegato di gateway per l'adattatore.
Ipv4Metric
Tipo: ULONG
Metrica dell'interfaccia IPv4 per l'indirizzo dell'adattatore. Questo membro è applicabile solo a un indirizzo dell'adapter IPv4.
La metrica di route effettiva usata per calcolare le preferenze di route per IPv4 è la somma dell'offset della metrica di route specificato nel membro Metrica della struttura MIB_IPFORWARD_ROW2 e la metrica di interfaccia specificata in questo membro per IPv4.
Ipv6Metric
Tipo: ULONG
Metrica dell'interfaccia IPv6 per l'indirizzo dell'adattatore. Questo membro è applicabile solo a un indirizzo dell'adapter IPv6.
La metrica di route effettiva usata per calcolare le preferenze di route per IPv6 è la somma dell'offset della metrica di route specificato nel membro Metrica della struttura MIB_IPFORWARD_ROW2 e la metrica di interfaccia specificata in questo membro per IPv4.
Luid
Tipo: IF_LUID
Interfaccia LUID per l'indirizzo dell'adattatore.
Dhcpv4Server
Tipo: SOCKET_ADDRESS
Indirizzo IPv4 del server DHCP per l'indirizzo della scheda. Questo membro è applicabile solo a un indirizzo adattatore IPv4 configurato tramite DHCP.
CompartmentId
Tipo: NET_IF_COMPARTMENT_ID
ID del raggruppamento di routing per l'indirizzo dell'adattatore.
NetworkGuid
Tipo: NET_IF_NETWORK_GUID
GUID associato alla rete a cui appartiene l'interfaccia.
Se il provider di interfaccia non può fornire il GUID di rete, questo membro può essere un GUID zero. In questo caso, l'interfaccia è stata registrata da NDIS nella rete predefinita.
ConnectionType
Tipo: NET_IF_CONNECTION_TYPE
Tipo di connessione dell'interfaccia per l'indirizzo dell'adattatore.
Questo membro può essere uno dei valori del tipo di enumerazione NET_IF_CONNECTION_TYPE definito nel file di intestazione Ifdef.h .
TunnelType
Tipo: TUNNEL_TYPE
Metodo di incapsulamento usato da un tunnel se l'indirizzo dell'adattatore è un tunnel.
Dhcpv6Server
Tipo: SOCKET_ADDRESS
Indirizzo IPv6 del server DHCPv6 per l'indirizzo dell'adapter. Questo membro è applicabile solo a un indirizzo adattatore IPv6 configurato usando DHCPv6. Questo membro della struttura non è attualmente supportato ed è riservato per l'uso futuro.
Dhcpv6ClientDuid[MAX_DHCPV6_DUID_LENGTH]
Tipo: BYTE[MAX_DHCPV6_DUID_LENGTH]
Identificatore univoco DHCP (DUID) per il client DHCPv6. Questo membro è applicabile solo a un indirizzo adattatore IPv6 configurato usando DHCPv6.
Dhcpv6ClientDuidLength
Tipo: ULONG
Lunghezza, in byte, dell'identificatore univoco DHCP (DUID) per il client DHCPv6. Questo membro è applicabile solo a un indirizzo adattatore IPv6 configurato usando DHCPv6.
Dhcpv6Iaid
Tipo: ULONG
Identificatore per un'associazione di identità scelta dal client DHCPv6. Questo membro è applicabile solo a un indirizzo adattatore IPv6 configurato usando DHCPv6.
FirstDnsSuffix
Tipo: PIP_ADAPTER_DNS_SUFFIX
Puntatore alla prima struttura IP_ADAPTER_DNS_SUFFIX in un elenco collegato di suffisso DNS per l'adapter.
Commenti
La funzione GetAdaptersAddresses recupera informazioni per indirizzi IPv4 e IPv6 e restituisce queste informazioni come elenco collegato di strutture IP_ADAPTER_ADDRESSES
I valori di indice dell'adapter specificati nei membri IfIndex e Ipv6IfIndex possono cambiare quando un adattatore è disabilitato e quindi abilitato o in altre circostanze e non deve essere considerato persistente.
I valori per il membro IfType sono definiti nel file di intestazione Ipifcons.h . Sono attualmente supportati solo i valori possibili elencati nella descrizione del membro IfType .
Le dimensioni della struttura di IP_ADAPTER_ADDRESSES sono state modificate in Windows XP con SP1 e versioni successive. Le dimensioni della struttura IP_ADAPTER_ADDRESSES sono state modificate anche in Windows Vista e versioni successive. Le dimensioni della struttura IP_ADAPTER_ADDRESSES sono state modificate anche in Windows Vista con SP1 e versioni successive e inWindows Server 2008 e versioni successive. Il membro Length deve essere usato per determinare quale versione della struttura IP_ADAPTER_ADDRESSES viene usata.
La versione della struttura IP_ADAPTER_ADDRESSES in Windows XP con SP1 e versioni successive include i nuovi membri seguenti aggiunti: Ipv6IfIndex, ZoneIndices e FirstPrefix.
La versione della struttura IP_ADAPTER_ADDRESSES in Windows Vista e versioni successive ha aggiunto i nuovi membri seguenti: TransmitLinkSpeed, ReceiveLinkSpeed, FirstWinsServerAddress, FirstGatewayAddress, Ipv4Metric, Ipv6Metric, Luid, Dhcpv4Server, CompartmentId, NetworkGuid, ConnectionType, TunnelType, Dhcpv6ClientDuid, Dhcpv6ClientDuid,Dhcpv6ClientDuidLength e Dhcpv6Iaid.
La versione della struttura IP_ADAPTER_ADDRESSES in Windows Vista con SP1and successiva e in Windows Server 2008 e versioni successive ha aggiunto il nuovo membro seguente: FirstDnsSuffix.
I membri Ipv4Metric e Ipv6Metric vengono usati per assegnare priorità alle metriche di route per le route connesse a più interfacce nel computer locale.
L'ordine delle strutture IP_ADAPTER_UNICAST_ADDRESS collegate a cui punta il membro FirstUnicastAddress restituito dalla funzione GetAdaptersAddresses non riflette l'ordine in cui gli indirizzi IP sono stati aggiunti a un adattatore e possono variare tra le versioni di Windows. Analogamente, l'ordine delle strutture IP_ADAPTER_ANYCAST_ADDRESScollegate a cui punta il membro FirstAnycastAddress e l'ordine delle strutture IP_ADAPTER_MULTICAST_ADDRESS collegate a cui punta il membro FirstMulticastAddress non riflettono l'ordine di aggiunta degli indirizzi IP a una scheda e può variare tra le versioni di Windows.
Inoltre, le strutture di IP_ADAPTER_UNICAST_ADDRESS collegate a cui punta il membro FirstUnicastAddress e le strutture IP_ADAPTER_PREFIX collegate a cui punta il membro FirstPrefix vengono mantenute come elenchi collegati interni separati dal sistema operativo. Di conseguenza, l'ordine delle strutture IP_ADAPTER_UNICAST_ADDRESScollegate a cui punta il membro FirstUnicastAddress non ha alcuna relazione con l'ordine delle strutture IP_ADAPTER_PREFIX collegate a cui punta il membro FirstPrefix.
In Windows Vista e versioni successive, le strutture IP_ADAPTER_PREFIX collegate a cui punta il membro FirstPrefix includono tre prefissi dell'adattatore IP per ogni indirizzo IP assegnato alla scheda. Questi includono il prefisso dell'indirizzo IP host, il prefisso dell'indirizzo IP della subnet e il prefisso dell'indirizzo IP di trasmissione della subnet. Inoltre, per ogni scheda è presente un prefisso di indirizzo multicast e un prefisso di indirizzo di trasmissione.
In Windows XP con SP1 e versioni successive precedenti a Windows Vista, le strutture collegate IP_ADAPTER_PREFIX puntate dal membro FirstPrefix includono solo un singolo prefisso dell'adattatore IP per ogni indirizzo IP assegnato alla scheda.
In Windows SDK la versione della struttura da usare in Windows Vista e versioni successive viene definita come IP_ADAPTER_ADDRESSES_LH. In Microsoft Windows Software Development Kit (SDK), la versione di questa struttura da usare nei sistemi precedenti, inclusi Windows XP con SP1 e versioni successive, viene definita come IP_ADAPTER_ADDRESSES_XP. Quando si compila un'applicazione se la piattaforma di destinazione è Windows Vista e versioni successive (NTDDI_VERSION >= NTDDI_LONGHORN
, _WIN32_WINNT >= 0x0600
o ), WINVER >= 0x0600
la struttura IP_ADAPTER_ADDRESSES_LH viene digitata nella struttura IP_ADAPTER_ADDRESSES . Quando si compila un'applicazione se la piattaforma di destinazione non è Windows Vista e versioni successive, la struttura IP_ADAPTER_ADDRESSES_XP viene digitata nella struttura IP_ADAPTER_ADDRESSES .
La struttura SOCKET_ADDRESS viene usata nella struttura IP_ADAPTER_ADDRESSES . In Windows SDK rilasciato per Windows Vista e versioni successive, l'organizzazione dei file di intestazione è stata modificata e la struttura SOCKET_ADDRESS viene definita nel file di intestazione Ws2def.h che viene automaticamente incluso dal file di intestazione Winsock2.h . Nel Platform Software Development Kit (SDK) rilasciato per Windows Server 2003 e Windows XP, la struttura SOCKET_ADDRESS viene dichiarata nel file di intestazione Winsock2.h . Per usare la struttura IP_ADAPTER_ADDRESSES , il file di intestazione Winsock2.h deve essere incluso prima del file di intestazione Iphlpapi.h .
Esempio
In questo esempio viene recuperata la struttura di IP_ADAPTER_ADDRESSES per gli adattatori associati al sistema e vengono stampati alcuni membri per ogni interfaccia dell'adattatore.
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.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(int argc, char **argv)
{
/* Declare and initialize variables */
DWORD dwSize = 0;
DWORD dwRetVal = 0;
unsigned int i = 0;
// Set the flags to pass to GetAdaptersAddresses
ULONG flags = GAA_FLAG_INCLUDE_PREFIX;
// default to unspecified address family (both)
ULONG family = AF_UNSPEC;
LPVOID lpMsgBuf = NULL;
PIP_ADAPTER_ADDRESSES pAddresses = NULL;
ULONG outBufLen = 0;
PIP_ADAPTER_ADDRESSES pCurrAddresses = NULL;
PIP_ADAPTER_UNICAST_ADDRESS pUnicast = NULL;
PIP_ADAPTER_ANYCAST_ADDRESS pAnycast = NULL;
PIP_ADAPTER_MULTICAST_ADDRESS pMulticast = NULL;
IP_ADAPTER_DNS_SERVER_ADDRESS *pDnServer = NULL;
IP_ADAPTER_PREFIX *pPrefix = NULL;
if (argc != 2) {
printf(" Usage: getadapteraddresses family\n");
printf(" getadapteraddresses 4 (for IPv4)\n");
printf(" getadapteraddresses 6 (for IPv6)\n");
printf(" getadapteraddresses A (for both IPv4 and IPv6)\n");
exit(1);
}
if (atoi(argv[1]) == 4)
family = AF_INET;
else if (atoi(argv[1]) == 6)
family = AF_INET6;
outBufLen = sizeof (IP_ADAPTER_ADDRESSES);
pAddresses = (IP_ADAPTER_ADDRESSES *) MALLOC(outBufLen);
// Make an initial call to GetAdaptersAddresses to get the
// size needed into the outBufLen variable
if (GetAdaptersAddresses(family, flags, NULL, pAddresses, &outBufLen)
== ERROR_BUFFER_OVERFLOW) {
FREE(pAddresses);
pAddresses = (IP_ADAPTER_ADDRESSES *) MALLOC(outBufLen);
}
if (pAddresses == NULL) {
printf("Memory allocation failed for IP_ADAPTER_ADDRESSES struct\n");
exit(1);
}
// Make a second call to GetAdaptersAddresses to get the
// actual data we want
printf("Memory allocated for GetAdapterAddresses = %d bytes\n", outBufLen);
printf("Calling GetAdaptersAddresses function with family = ");
if (family == AF_INET)
printf("AF_INET\n");
if (family == AF_INET6)
printf("AF_INET6\n");
if (family == AF_UNSPEC)
printf("AF_UNSPEC\n\n");
dwRetVal =
GetAdaptersAddresses(family, flags, NULL, pAddresses, &outBufLen);
if (dwRetVal == NO_ERROR) {
// If successful, output some information from the data we received
pCurrAddresses = pAddresses;
while (pCurrAddresses) {
printf("\tLength of the IP_ADAPTER_ADDRESS struct: %ld\n",
pCurrAddresses->Length);
printf("\tIfIndex (IPv4 interface): %u\n", pCurrAddresses->IfIndex);
printf("\tAdapter name: %s\n", pCurrAddresses->AdapterName);
pUnicast = pCurrAddresses->FirstUnicastAddress;
if (pUnicast != NULL) {
for (i = 0; pUnicast != NULL; i++)
pUnicast = pUnicast->Next;
printf("\tNumber of Unicast Addresses: %d\n", i);
} else
printf("\tNo Unicast Addresses\n");
pAnycast = pCurrAddresses->FirstAnycastAddress;
if (pAnycast) {
for (i = 0; pAnycast != NULL; i++)
pAnycast = pAnycast->Next;
printf("\tNumber of Anycast Addresses: %d\n", i);
} else
printf("\tNo Anycast Addresses\n");
pMulticast = pCurrAddresses->FirstMulticastAddress;
if (pMulticast) {
for (i = 0; pMulticast != NULL; i++)
pMulticast = pMulticast->Next;
printf("\tNumber of Multicast Addresses: %d\n", i);
} else
printf("\tNo Multicast Addresses\n");
pDnServer = pCurrAddresses->FirstDnsServerAddress;
if (pDnServer) {
for (i = 0; pDnServer != NULL; i++)
pDnServer = pDnServer->Next;
printf("\tNumber of DNS Server Addresses: %d\n", i);
} else
printf("\tNo DNS Server Addresses\n");
printf("\tDNS Suffix: %wS\n", pCurrAddresses->DnsSuffix);
printf("\tDescription: %wS\n", pCurrAddresses->Description);
printf("\tFriendly name: %wS\n", pCurrAddresses->FriendlyName);
if (pCurrAddresses->PhysicalAddressLength != 0) {
printf("\tPhysical address: ");
for (i = 0; i < pCurrAddresses->PhysicalAddressLength;
i++) {
if (i == (pCurrAddresses->PhysicalAddressLength - 1))
printf("%.2X\n",
(int) pCurrAddresses->PhysicalAddress[i]);
else
printf("%.2X-",
(int) pCurrAddresses->PhysicalAddress[i]);
}
}
printf("\tFlags: %ld\n", pCurrAddresses->Flags);
printf("\tMtu: %lu\n", pCurrAddresses->Mtu);
printf("\tIfType: %ld\n", pCurrAddresses->IfType);
printf("\tOperStatus: %ld\n", pCurrAddresses->OperStatus);
printf("\tIpv6IfIndex (IPv6 interface): %u\n",
pCurrAddresses->Ipv6IfIndex);
printf("\tZoneIndices (hex): ");
for (i = 0; i < 16; i++)
printf("%lx ", pCurrAddresses->ZoneIndices[i]);
printf("\n");
pPrefix = pCurrAddresses->FirstPrefix;
if (pPrefix) {
for (i = 0; pPrefix != NULL; i++)
pPrefix = pPrefix->Next;
printf("\tNumber of IP Adapter Prefix entries: %d\n", i);
} else
printf("\tNo IP Adapter Prefix entries\n");
printf("\n");
pCurrAddresses = pCurrAddresses->Next;
}
} else {
printf("Call to GetAdaptersAddresses failed with error: %d\n",
dwRetVal);
if (dwRetVal == ERROR_NO_DATA)
printf("\tNo addresses were found for the requested parameters\n");
else {
if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwRetVal, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) & lpMsgBuf, 0, NULL)) {
printf("\tError: %s", lpMsgBuf);
LocalFree(lpMsgBuf);
FREE(pAddresses);
exit(1);
}
}
}
FREE(pAddresses);
return 0;
}
Requisiti
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Intestazione | iptypes.h (includere Iphlpapi.h) |
Vedi anche
Pagina iniziale dell'helper IP
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per