IP_ADAPTER_ADDRESSES_LH-Struktur (iptypes.h)

Die IP_ADAPTER_ADDRESSES-Struktur ist der Headerknoten für eine verknüpfte Liste von Adressen für einen bestimmten Adapter. Diese Struktur kann gleichzeitig als Teil einer verknüpften Liste von IP_ADAPTER_ADDRESSES-Strukturen verwendet werden.

Syntax

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

Typ: ULONGLONG

Reserviert. Wird vom Compiler verwendet, um die Struktur auszurichten.

Length

Typ: ULONG

Die Länge dieser Struktur in Bytes. Beachten Sie, dass sich die Länge der IP_ADAPTER_ADDRESSES-Struktur unter Windows XP mit SP1 und höher sowie unter Windows Vista und höher geändert hat.

IfIndex

Art: DWORD

Der Index der IPv4-Schnittstelle, der diese Adressen zugeordnet sind. Unter Windows Server 2003 und Windows XP ist dieser Member null, wenn IPv4 auf der Schnittstelle nicht verfügbar ist.

Next

Typ: Struktur _IP_ADAPTER_ADDRESSES*

Ein Zeiger auf die nächste Adapteradressenstruktur in der Liste.

AdapterName

Typ: PCHAR

Ein Array von Zeichen, das den Namen des Adapters enthält, dem diese Adressen zugeordnet sind. Im Gegensatz zum Anzeigenamen eines Adapters ist der in AdapterName angegebene Adaptername dauerhaft und kann vom Benutzer nicht geändert werden.

FirstUnicastAddress

Typ: PIP_ADAPTER_UNICAST_ADDRESS

Ein Zeiger auf die erste IP_ADAPTER_UNICAST_ADDRESS-Struktur in einer verknüpften Liste von IP-Unicastadressen für den Adapter.

FirstAnycastAddress

Typ: PIP_ADAPTER_ANYCAST_ADDRESS

Ein Zeiger auf die erste IP_ADAPTER_ANYCAST_ADDRESS-Struktur in einer verknüpften Liste von IP-Anycastadressen für den Adapter.

FirstMulticastAddress

Typ: PIP_ADAPTER_MULTICAST_ADDRESS

Ein Zeiger auf die erste IP_ADAPTER_MULTICAST_ADDRESS-Struktur in einer Liste der IP-Multicastadressen für den Adapter.

FirstDnsServerAddress

Typ: PIP_ADAPTER_DNS_SERVER_ADDRESS

Ein Zeiger auf die erste IP_ADAPTER_DNS_SERVER_ADDRESS-Struktur in einer verknüpften Liste von DNS-Serveradressen für den Adapter.

DnsSuffix

Typ: PWCHAR

Das DNS-Suffix (Domain Name System), das diesem Adapter zugeordnet ist.

Description

Typ: PWCHAR

Eine Beschreibung für den Adapter. Dieser Member ist schreibgeschützt.

FriendlyName

Typ: PWCHAR

Ein benutzerfreundlicher Name für den Adapter. Beispiel: "Local Area Connection 1." Dieser Name wird in Kontexten wie dem Befehlszeilenprogramm ipconfig und dem Ordner Connection angezeigt. Dieser Member ist schreibgeschützter Und kann nicht mithilfe von IP-Hilfsfunktionen geändert werden.

Dieses Element ist das ifAlias-Feld, das von NDIS verwendet wird, wie in RFC 2863 beschrieben. Das Feld ifAlias kann von einem NDIS-Schnittstellenanbieter festgelegt werden, wenn der NDIS-Treiber installiert wird. Für NDIS-Miniporttreiber wird dieses Feld von NDIS festgelegt.

PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH]

Typ: BYTE[MAX_ADAPTER_ADDRESS_LENGTH]

Die MAC-Adresse (Media Access Control) für den Adapter. In einem Ethernet-Netzwerk würde dieses Mitglied beispielsweise die Ethernet-Hardwareadresse angeben.

PhysicalAddressLength

Art: DWORD

Die Länge der im PhysicalAddress-Member angegebenen Adresse in Bytes. Für Schnittstellen ohne Datenverknüpfungsebene ist dieser Wert 0.

Flags

Art: DWORD

Ein Satz von Flags, die verschiedene Einstellungen für den Adapter angeben. Diese Werte werden in der Iptypes.h-Headerdatei definiert. Kombinationen dieser Flagbits sind möglich.

Flag Bedeutung
IP_ADAPTER_DDNS_ENABLED
0x0001
Dynamisches DNS ist auf diesem Adapter aktiviert.
IP_ADAPTER_REGISTER_ADAPTER_SUFFIX
0x0002
Registrieren Sie das DNS-Suffix für diesen Adapter.
IP_ADAPTER_DHCP_ENABLED
0x0004
Das Dynamic Host Configuration Protocol (DHCP) ist auf diesem Adapter aktiviert.
IP_ADAPTER_RECEIVE_ONLY
0x0008
Der Adapter ist ein empfangsgeschützter Adapter.
IP_ADAPTER_NO_MULTICAST
0x0010
Der Adapter ist kein Multicastempfänger.
IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG
0x0020
Der Adapter enthält weitere IPv6-spezifische zustandsbehaftete Konfigurationsinformationen.
IP_ADAPTER_NETBIOS_OVER_TCPIP_ENABLED
0x0040
Der Adapter ist für NetBIOS über TCP/IP aktiviert.
Hinweis Dieses Flag wird nur unter Windows Vista und höher unterstützt, wenn die Anwendung für eine Zielplattform mit einer NTDDI-Version gleich oder größer als NTDDI_LONGHORN kompiliert wurde. Dieses Flag wird in der IP_ADAPTER_ADDRESSES_LH-Struktur als Bitfeld NetbiosOverTcpipEnabled definiert.
 
IP_ADAPTER_IPV4_ENABLED
0x0080
Der Adapter ist für IPv4 aktiviert.
Hinweis Dieses Flag wird nur unter Windows Vista und höher unterstützt, wenn die Anwendung für eine Zielplattform mit einer NTDDI-Version gleich oder größer als NTDDI_LONGHORN kompiliert wurde. Dieses Flag wird in der IP_ADAPTER_ADDRESSES_LH-Struktur als Ipv4Enabled-Bitfeld definiert.
 
IP_ADAPTER_IPV6_ENABLED
0x0100
Der Adapter ist für IPv6 aktiviert.
Hinweis Dieses Flag wird nur unter Windows Vista und höher unterstützt, wenn die Anwendung für eine Zielplattform mit einer NTDDI-Version gleich oder größer als NTDDI_LONGHORN kompiliert wurde. Dieses Flag wird in der IP_ADAPTER_ADDRESSES_LH-Struktur als Ipv6Enabled-Bitfeld definiert.
 
IP_ADAPTER_IPV6_MANAGE_ADDRESS_CONFIG
0x0200
Der Adapter ist für die Konfiguration der verwalteten IPv6-Adresse aktiviert.
Hinweis Dieses Flag wird nur unter Windows Vista und höher unterstützt, wenn die Anwendung für eine Zielplattform mit einer NTDDI-Version gleich oder größer als NTDDI_LONGHORN kompiliert wurde. Dieses Flag wird in der IP_ADAPTER_ADDRESSES_LH-Struktur als Bitfeld Ipv6ManagedAddressConfigurationSupported definiert.
 

DdnsEnabled

RegisterAdapterSuffix

Dhcpv4Enabled

ReceiveOnly

NoMulticast

Ipv6OtherStatefulConfig

NetbiosOverTcpipEnabled

Ipv4Enabled

Ipv6Enabled

Ipv6ManagedAddressConfigurationSupported

Mtu

Art: DWORD

Die maximale MTU-Größe (Transmission Unit) in Byte.

IfType

Art: DWORD

Der Schnittstellentyp, der von der Internet Assigned Names Authority (IANA) definiert ist. Mögliche Werte für den Schnittstellentyp sind in der Headerdatei Ipifcons.h aufgeführt.

In der folgenden Tabelle sind allgemeine Werte für den Schnittstellentyp aufgeführt, obwohl viele andere Werte möglich sind.

Wert Bedeutung
IF_TYPE_OTHER
1
Eine andere Art von Netzwerkschnittstelle.
IF_TYPE_ETHERNET_CSMACD
6
Eine Ethernet-Netzwerkschnittstelle.
IF_TYPE_ISO88025_TOKENRING
9
Eine Tokenring-Netzwerkschnittstelle.
IF_TYPE_PPP
23
Eine PPP-Netzwerkschnittstelle.
IF_TYPE_SOFTWARE_LOOPBACK
24
Eine Softwareschleifen-Netzwerkschnittstelle.
IF_TYPE_ATM
37
Eine ATM-Netzwerkschnittstelle.
IF_TYPE_IEEE80211
71
Eine IEEE 802.11-Funknetzwerkschnittstelle.

Unter Windows Vista und höher werden Drahtlosnetzwerkkarten als IF_TYPE_IEEE80211 gemeldet. In früheren Versionen von Windows werden Drahtlosnetzwerkkarten als IF_TYPE_ETHERNET_CSMACD gemeldet.

Unter Windows XP mit SP3 und windows XP mit SP2 x86 mit der Wlan-API für Windows XP mit installiertem SP2 kann die WlanEnumInterfaces-Funktion verwendet werden, um drahtlose Schnittstellen auf dem lokalen Computer aufzulisten.

IF_TYPE_TUNNEL
131
Eine Netzwerkschnittstelle vom Typ "Tunnelkapselung".
IF_TYPE_IEEE1394
144
Eine serielle Netzwerkschnittstelle mit hoher Leistung nach IEEE 1394 (Firewire).

OperStatus

Typ: IF_OPER_STATUS

Der betriebsbereite status für die Schnittstelle, wie in RFC 2863 definiert. Weitere Informationen finden Sie unter http://www.ietf.org/rfc/rfc2863.txt. Dieser Member kann einer der Werte aus dem IF_OPER_STATUS Enumerationstyp sein, der in der Headerdatei Iftypes.h definiert ist. Unter Windows Vista und höher wurden die Headerdateien neu organisiert, und diese Enumeration ist in der Headerdatei Ifdef.h definiert.

Wert Bedeutung
IfOperStatusUp
1
Die Schnittstelle ist in der Lage, Pakete zu übergeben.
IfOperStatusDown
2
Die Schnittstelle ist ausgefallen und befindet sich nicht in einer Bedingung, um Pakete zu übergeben. Der IfOperStatusDown-Zustand hat zwei Bedeutungen, abhängig vom Wert des AdminStatus-Elements . Wenn AdminStatus nicht auf NET_IF_ADMIN_STATUS_DOWN und ifOperStatus auf IfOperStatusDown festgelegt ist, wird davon ausgegangen, dass auf der Schnittstelle eine Fehlerbedingung vorhanden ist. Wenn AdminStatus auf IfOperStatusDown festgelegt ist, wird ifOperStatus normalerweise auch auf IfOperStatusDown oder IfOperStatusNotPresent festgelegt, und es gibt nicht unbedingt eine Fehlerbedingung auf der Schnittstelle.
IfOperStatusTesting
3
Die Schnittstelle befindet sich im Testmodus.
IfOperStatusUnknown
4
Die operative status der Schnittstelle ist unbekannt.
IfOperStatusDormant
5
Die Schnittstelle befindet sich nicht in einer Bedingung, um Pakete zu übergeben (sie ist nicht aktiviert), sondern befindet sich in einem ausstehenden Zustand und wartet auf ein externes Ereignis. Bei Bedarfsgesteuerten Schnittstellen identifiziert dieser neue Zustand die Situation, in der die Schnittstelle darauf wartet, dass Ereignisse sie im IfOperStatusUp-Zustand platzieren.
IfOperStatusNotPresent
6
Eine Einschränkung des IfOperStatusDown-Zustands , der angibt, dass die relevante Schnittstelle ausgefallen ist, insbesondere weil eine Komponente (in der Regel eine Hardwarekomponente) im verwalteten System nicht vorhanden ist.
IfOperStatusLowerLayerDown
7
Eine Einschränkung des IfOperStatusDown-Zustands . Dieser neue Zustand gibt an, dass diese Schnittstelle auf einer oder mehreren anderen Schnittstellen ausgeführt wird und dass diese Schnittstelle ausgefallen ist, insbesondere weil mindestens eine dieser Schnittstellen mit niedrigerer Ebene ausgefallen ist.

Ipv6IfIndex

Art: DWORD

Der Schnittstellenindex für die IPv6-IP-Adresse. Dieser Member ist null, wenn IPv6 auf der Schnittstelle nicht verfügbar ist.

Hinweis Dieses Strukturelement ist nur unter Windows XP mit SP1 und höher verfügbar.
 

ZoneIndices[16]

Typ: DWORD[16]

Ein Array von Bereichs-IDs für jede Bereichsebene, die zum Verfassen von sockaddr-Strukturen verwendet wird. Die SCOPE_LEVEL-Enumeration wird zum Indizieren des Arrays verwendet. Unter IPv6 können einer einzelnen Schnittstelle basierend auf einer Bereichs-ID mehrere IPv6-Multicastadressen zugewiesen werden.

Hinweis Dieses Strukturelement ist nur unter Windows XP mit SP1 und höher verfügbar.
 

FirstPrefix

Typ: PIP_ADAPTER_PREFIX

Ein Zeiger auf die erste IP_ADAPTER_PREFIX-Struktur in einer verknüpften Liste von IP-Adapterpräfixen für den Adapter.

Hinweis Dieses Strukturelement ist nur unter Windows XP mit SP1 und höher verfügbar.
 

TransmitLinkSpeed

Typ: ULONG64

Die aktuelle Geschwindigkeit des Übertragungslinks für den Adapter in Bits pro Sekunde.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

ReceiveLinkSpeed

Typ: ULONG64

Die aktuelle Geschwindigkeit des Empfangslinks für den Adapter in Bits pro Sekunde.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

FirstWinsServerAddress

Typ: PIP_ADAPTER_WINS_SERVER_ADDRESS_LH

Ein Zeiger auf die erste IP_ADAPTER_WINS_SERVER_ADDRESS-Struktur in einer verknüpften Liste der WINS-Serveradressen (Windows Internet Name Service) für den Adapter.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

FirstGatewayAddress

Typ: PIP_ADAPTER_GATEWAY_ADDRESS_LH

Ein Zeiger auf die erste IP_ADAPTER_GATEWAY_ADDRESS-Struktur in einer verknüpften Liste von Gateways für den Adapter.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

Ipv4Metric

Typ: ULONG

Die IPv4-Schnittstellenmetrik für die Adapteradresse. Dieser Member gilt nur für eine IPv4-Adapteradresse.

Die tatsächliche Routenmetrik, die zum Berechnen der Routeneinstellungen für IPv4 verwendet wird, ist die Summe des Routenmetrikoffsets, der im Metrikelement der MIB_IPFORWARD_ROW2-Struktur und der in diesem Element für IPv4 angegebenen Schnittstellenmetrik angegeben ist.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

Ipv6Metric

Typ: ULONG

Die IPv6-Schnittstellenmetrik für die Adapteradresse. Dieser Member gilt nur für eine IPv6-Adapteradresse.

Die tatsächliche Routenmetrik, die zum Berechnen der Routeneinstellungen für IPv6 verwendet wird, ist die Summe des Routenmetrikoffsets, der im Metrikelement der MIB_IPFORWARD_ROW2-Struktur und der in diesem Element für IPv4 angegebenen Schnittstellenmetrik angegeben ist.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

Luid

Typ: IF_LUID

Die Schnittstellen-LUID für die Adapteradresse.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

Dhcpv4Server

Typ: SOCKET_ADDRESS

Die IPv4-Adresse des DHCP-Servers für die Adapteradresse. Dieser Member gilt nur für eine IPv4-Adapteradresse, die mithilfe von DHCP konfiguriert wurde.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

CompartmentId

Typ: NET_IF_COMPARTMENT_ID

Die Routingfach-ID für die Adapteradresse.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar. Dieser Member wird derzeit nicht unterstützt und ist für die zukünftige Verwendung reserviert.
 

NetworkGuid

Typ: NET_IF_NETWORK_GUID

Die GUID , die dem Netzwerk zugeordnet ist, zu dem die Schnittstelle gehört.

Wenn der Schnittstellenanbieter die Netzwerk-GUID nicht bereitstellen kann, kann es sich bei diesem Element um eine NULL-GUID handelt. In diesem Fall wurde die Schnittstelle von NDIS im Standardnetzwerk registriert.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

ConnectionType

Typ: NET_IF_CONNECTION_TYPE

Der Schnittstellenverbindungstyp für die Adapteradresse.

Dieser Member kann einer der Werte aus dem NET_IF_CONNECTION_TYPE Enumerationstyp sein, der in der Headerdatei "Ifdef.h " definiert ist.

Wert Bedeutung
NET_IF_CONNECTION_DEDICATED
1
Der Verbindungstyp ist dediziert. Die Verbindung wird automatisch hergestellt, wenn der Mediensinn TRUE ist. Beispielsweise ist eine Ethernet-Verbindung dedizierter.
NET_IF_CONNECTION_PASSIVE
2
Der Verbindungstyp ist passiv. Das Remoteende muss die Verbindung mit der lokalen Station herstellen. Beispielsweise ist eine RAS-Schnittstelle passiv.
NET_IF_CONNECTION_DEMAND
3
Der Verbindungstyp ist die Bedarfswahl. Eine Verbindung dieses Typs wird als Reaktion auf eine lokale Aktion (z. B. das Senden eines Pakets) hergestellt.
NET_IF_CONNECTION_MAXIMUM
4
Der maximal mögliche Wert für den NET_IF_CONNECTION_TYPE Enumerationstyp. Dies ist kein rechtlicher Wert für das ConnectionType-Mitglied .
 
Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

TunnelType

Typ: TUNNEL_TYPE

Die Kapselungsmethode, die von einem Tunnel verwendet wird, wenn die Adapteradresse ein Tunnel ist.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 
Der Tunneltyp wird von der Internet Assigned Names Authority (IANA) definiert. Weitere Informationen finden Sie unter http://www.iana.org/assignments/ianaiftype-mib. Dieses Element kann einer der Werte aus dem TUNNEL_TYPE Enumerationstyp sein, der in der Headerdatei "Ifdef.h " definiert ist.
Wert Bedeutung
TUNNEL_TYPE_NONE
0
Kein Tunnel.
TUNNEL_TYPE_OTHER
1
Keiner der folgenden Tunneltypen.
TUNNEL_TYPE_DIRECT
2
Ein Paket wird direkt in einem normalen IP-Header gekapselt, ohne Zwischenheader, und unicast an den Remotetunnelendpunkt.
TUNNEL_TYPE_6TO4
11
Ein IPv6-Paket wird direkt in einem IPv4-Header gekapselt, ohne Zwischenheader und Unicast an das vom 6to4-Protokoll bestimmte Ziel.
TUNNEL_TYPE_ISATAP
13
Ein IPv6-Paket wird direkt in einem IPv4-Header gekapselt, ohne Zwischenheader und unicast an das vom ISATAP-Protokoll bestimmte Ziel.
TUNNEL_TYPE_TEREDO
14
Teredo-Kapselung für IPv6-Pakete.
TUNNEL_TYPE_IPHTTPS
15
IP-über HTTPS-Kapselung für IPv6-Pakete.
Hinweis Dieser Enumerationswert ist nur unter Windows 7, Windows Server 2008 R2 und höher verfügbar.
 

Dhcpv6Server

Typ: SOCKET_ADDRESS

Die IPv6-Adresse des DHCPv6-Servers für die Adapteradresse. Dieses Element gilt nur für eine IPv6-Adapteradresse, die mit DHCPv6 konfiguriert wurde. Dieser Strukturmember wird derzeit nicht unterstützt und ist für die zukünftige Verwendung reserviert.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

Dhcpv6ClientDuid[MAX_DHCPV6_DUID_LENGTH]

Typ: BYTE[MAX_DHCPV6_DUID_LENGTH]

Der eindeutige DHCP-Bezeichner (DHCP Unique Identifier, DUID) für den DHCPv6-Client. Dieses Element gilt nur für eine IPv6-Adapteradresse, die mit DHCPv6 konfiguriert wurde.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

Dhcpv6ClientDuidLength

Typ: ULONG

Die Länge des DHCP-eindeutigen Bezeichners (DUID) für den DHCPv6-Client in Bytes. Dieses Element gilt nur für eine IPv6-Adapteradresse, die mit DHCPv6 konfiguriert wurde.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

Dhcpv6Iaid

Typ: ULONG

Der Bezeichner für eine vom DHCPv6-Client ausgewählte Identitätszuordnung. Dieses Element gilt nur für eine IPv6-Adapteradresse, die mit DHCPv6 konfiguriert wurde.

Hinweis Dieses Strukturelement ist nur unter Windows Vista und höher verfügbar.
 

FirstDnsSuffix

Typ: PIP_ADAPTER_DNS_SUFFIX

Ein Zeiger auf die erste IP_ADAPTER_DNS_SUFFIX Struktur in einer verknüpften Liste von DNS-Suffixen für den Adapter.

Hinweis Dieses Strukturelement ist nur unter Windows Vista mit SP1 und höher sowie unter Windows Server 2008 und höher verfügbar.
 

Hinweise

Die GetAdaptersAddresses-Funktion ruft Informationen für IPv4- und IPv6-Adressen ab und gibt diese Informationen als verknüpfte Liste von IP_ADAPTER_ADDRESSES Strukturen zurück.

Die in den Membern IfIndex und Ipv6IfIndex angegebenen Adapterindexwerte können sich ändern, wenn ein Adapter deaktiviert und dann aktiviert ist, oder unter anderen Umständen, und sollten nicht als persistent betrachtet werden.

Die Werte für das IfType-Element werden in der Headerdatei Ipifcons.h definiert. Derzeit werden nur die in der Beschreibung des IfType-Members aufgeführten möglichen Werte unterstützt.

Die Größe der IP_ADAPTER_ADDRESSES Struktur wurde unter Windows XP mit SP1 und höher geändert. Die Größe der IP_ADAPTER_ADDRESSES-Struktur hat sich auch unter Windows Vista und höher geändert. Die Größe der IP_ADAPTER_ADDRESSES-Struktur hat sich auch unter Windows Vista mit SP1 und höher sowie unter Windows Server 2008 und höher geändert. Das Length-Element sollte verwendet werden, um zu bestimmen, welche Version der IP_ADAPTER_ADDRESSES-Struktur verwendet wird.

Die Version der IP_ADAPTER_ADDRESSES-Struktur unter Windows XP mit SP1 und höher enthält die folgenden neuen Member: Ipv6IfIndex, ZoneIndices und FirstPrefix.

Die Version der IP_ADAPTER_ADDRESSES-Struktur unter Windows Vista und höher enthält die folgenden neuen Member: TransmitLinkSpeed, ReceiveLinkSpeed, FirstWinsServerAddress, FirstGatewayAddress, Ipv4Metric, Ipv6Metric, Luid, Dhcpv4Server, CompartmentId, NetworkGuid, ConnectionType, TunnelType, Dhcpv6Server, Dhcpv6ClientDuid, Dhcpv6ClientDuidLength und Dhcpv6Iaid.

Die Version der IP_ADAPTER_ADDRESSES-Struktur unter Windows Vista mit SP1 und höher sowie unter Windows Server 2008 und höher hat das folgende neue Element hinzugefügt: FirstDnsSuffix.

Die Member Ipv4Metric und Ipv6Metric werden verwendet, um Routenmetriken für Routen zu priorisieren, die mit mehreren Schnittstellen auf dem lokalen Computer verbunden sind.

Die Reihenfolge der verknüpften IP_ADAPTER_UNICAST_ADDRESS Strukturen, auf die vom FirstUnicastAddress-Member verwiesen wird, die von der GetAdaptersAddresses-Funktion zurückgegeben werden, spiegelt nicht die Reihenfolge wider, in der IP-Adressen zu einem Adapter hinzugefügt wurden, und kann zwischen den Versionen von Windows variieren. Ebenso geben die Reihenfolge der verknüpften IP_ADAPTER_ANYCAST_ADDRESS Strukturen, auf die der FirstAnycastAddress-Member verweist, und die Reihenfolge der verknüpften IP_ADAPTER_MULTICAST_ADDRESS Strukturen, auf die das FirstMulticastAddress-Element verweist, nicht die Reihenfolge wider, in der IP-Adressen einem Adapter hinzugefügt wurden, und kann je nach Version von Windows variieren.

Darüber hinaus werden die verknüpften IP_ADAPTER_UNICAST_ADDRESS Strukturen, auf die das FirstUnicastAddress-Element verweist, und die verknüpften IP_ADAPTER_PREFIX Strukturen, auf die das FirstPrefix-Element verweist, vom Betriebssystem als separate interne verknüpfte Listen verwaltet. Daher steht die Reihenfolge der verknüpften IP_ADAPTER_UNICAST_ADDRESS Strukturen, auf die der FirstUnicastAddress-Member verweist, in keiner Beziehung zur Reihenfolge der verknüpften IP_ADAPTER_PREFIX Strukturen, auf die das FirstPrefix-Element verweist.

Unter Windows Vista und höher enthalten die verknüpften IP_ADAPTER_PREFIX Strukturen, auf die das FirstPrefix-Element verweist, drei IP-Adapterpräfixe für jede IP-Adresse, die dem Adapter zugewiesen ist. Dazu gehören das Host-IP-Adresspräfix, das Subnetz-IP-Adresspräfix und das Subnetz-Broadcast-IP-Adresspräfix. Darüber hinaus gibt es für jeden Adapter ein Multicastadresspräfix und ein Broadcastadresspräfix.

Unter Windows XP mit SP1 und höher vor Windows Vista enthalten die verknüpften IP_ADAPTER_PREFIX Strukturen, auf die das FirstPrefix-Element verweist, nur ein einzelnes IP-Adapterpräfix für jede DEM Adapter zugewiesene IP-Adresse.

Im Windows SDK ist die Version der Struktur für die Verwendung unter Windows Vista und höher als IP_ADAPTER_ADDRESSES_LH definiert. Im Microsoft Windows Software Development Kit (SDK) ist die Version dieser Struktur, die auf früheren Systemen verwendet werden soll, einschließlich Windows XP mit SP1 und höher, als IP_ADAPTER_ADDRESSES_XP definiert. Beim Kompilieren einer Anwendung, wenn die Zielplattform Windows Vista und höher (NTDDI_VERSION >= NTDDI_LONGHORN, oder WINVER >= 0x0600) ist, _WIN32_WINNT >= 0x0600wird die IP_ADAPTER_ADDRESSES_LH-Struktur in die IP_ADAPTER_ADDRESSES-Struktur eingegeben. Wenn eine Anwendung kompiliert wird, wenn die Zielplattform nicht Windows Vista und höher ist, wird die IP_ADAPTER_ADDRESSES_XP-Struktur in die IP_ADAPTER_ADDRESSES-Struktur eingegeben.

Die SOCKET_ADDRESS-Struktur wird in der IP_ADAPTER_ADDRESSES-Struktur verwendet. Im Windows SDK, das für Windows Vista und höher veröffentlicht wurde, wurde die organization der Headerdateien geändert, und die SOCKET_ADDRESS-Struktur ist in der Ws2def.h-Headerdatei definiert, die automatisch in der Winsock2.h-Headerdatei enthalten ist. Im Platform Software Development Kit (SDK), das für Windows Server 2003 und Windows XP veröffentlicht wurde, wird die SOCKET_ADDRESS-Struktur in der Winsock2.h-Headerdatei deklariert. Um die IP_ADAPTER_ADDRESSES-Struktur verwenden zu können, muss die Winsock2.h-Headerdatei vor der Iphlpapi.h-Headerdatei eingeschlossen werden.

Beispiele

In diesem Beispiel wird die IP_ADAPTER_ADDRESSES-Struktur für die dem System zugeordneten Adapter abgerufen und einige Member für jede Adapterschnittstelle ausgegeben.

#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;
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile iptypes.h (include Iphlpapi.h)

Weitere Informationen

GetAdaptersAddresses

IF_OPER_STATUS

Startseite des IP-Hilfsprogrammes

IP-Hilfsstrukturen

IP_ADAPTER_ANYCAST_ADDRESS

IP_ADAPTER_DNS_SERVER_ADDRESS

IP_ADAPTER_DNS_SUFFIX

IP_ADAPTER_GATEWAY_ADDRESS

IP_ADAPTER_MULTICAST_ADDRESS

IP_ADAPTER_PREFIX

IP_ADAPTER_UNICAST_ADDRESS

IP_ADAPTER_WINS_SERVER_ADDRESS

SCOPE_LEVEL

SOCKET_ADDRESS

sockaddr