IP_ADAPTER_ADDRESSES_LH 構造体 (iptypes.h)
IP_ADAPTER_ADDRESSES構造体は、特定のアダプターのアドレスのリンクされたリストのヘッダー ノードです。 この構造体は、IP_ADAPTER_ADDRESSES構造のリンクされたリストの一部として同時 に 使用できます。
構文
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;
メンバー
Alignment
種類: ULONGLONG
予約済み。 構造体を配置するためにコンパイラによって使用されます。
Length
種類: ULONG
この構造体の長さ (バイト単位)。 IP_ADAPTER_ADDRESSES構造の長さは、SP1 以降の Windows XP および Windows Vista 以降でも変更されることに注意してください。
IfIndex
型: DWORD
これらのアドレスが関連付けられている IPv4 インターフェイスのインデックス。 Windows Server 2003 および Windows XP では、IPv4 がインターフェイスで使用できない場合、このメンバーは 0 になります。
Next
型: 構造体_IP_ADAPTER_ADDRESSES*
次のアダプターへのポインターは、リスト内の構造体をアドレス指定します。
AdapterName
種類: PCHAR
これらのアドレスが関連付けられているアダプターの名前を含む文字の配列。 アダプターのフレンドリ名とは異なり、 AdapterName で指定されたアダプター名は永続的であり、ユーザーが変更することはできません。
FirstUnicastAddress
種類: PIP_ADAPTER_UNICAST_ADDRESS
アダプターの IP ユニキャスト アドレスのリンクリスト内の最初の IP_ADAPTER_UNICAST_ADDRESS 構造体へのポインター。
FirstAnycastAddress
種類: PIP_ADAPTER_ANYCAST_ADDRESS
アダプターの IP エニーキャスト アドレスのリンクされたリスト内の最初の IP_ADAPTER_ANYCAST_ADDRESS 構造体へのポインター。
FirstMulticastAddress
種類: PIP_ADAPTER_MULTICAST_ADDRESS
アダプターの IP マルチキャスト アドレスの一覧の最初の IP_ADAPTER_MULTICAST_ADDRESS 構造体へのポインター。
FirstDnsServerAddress
種類: PIP_ADAPTER_DNS_SERVER_ADDRESS
アダプターの DNS サーバー アドレスのリンクリスト内の最初の IP_ADAPTER_DNS_SERVER_ADDRESS 構造体へのポインター。
DnsSuffix
種類: PWCHAR
このアダプターに関連付けられているドメイン ネーム システム (DNS) サフィックス。
Description
種類: PWCHAR
アダプターの説明。 このメンバーは読み取り専用です。
FriendlyName
種類: PWCHAR
アダプターのわかりやすい名前。 たとえば、"ローカル エリア接続 1" です。この名前は、 ipconfig コマンド ライン プログラムや Connection フォルダーなどのコンテキストで表示されます。 このメンバーは読み取り専用であり、IP ヘルパー関数を使用して変更することはできません。
このメンバーは、 RFC 2863 で説明されているように、NDIS で使用される ifAlias フィールドです。 IFAlias フィールドは、NDIS ドライバーのインストール時に NDIS インターフェイス プロバイダーによって設定できます。 NDIS ミニポート ドライバーの場合、このフィールドは NDIS によって設定されます。
PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH]
型: BYTE[MAX_ADAPTER_ADDRESS_LENGTH]
アダプターのメディア 存取控制 (MAC) アドレス。 たとえば、イーサネット ネットワークでは、このメンバーはイーサネット ハードウェア アドレスを指定します。
PhysicalAddressLength
型: DWORD
PhysicalAddress メンバーで指定されたアドレスの長さ (バイト単位)。 データ リンク レイヤーを持たないインターフェイスの場合、この値は 0 です。
Flags
型: DWORD
アダプターのさまざまな設定を指定するフラグのセット。 これらの値は 、Iptypes.h ヘッダー ファイルで定義されています。 これらのフラグ ビットの組み合わせが可能です。
DdnsEnabled
RegisterAdapterSuffix
Dhcpv4Enabled
ReceiveOnly
NoMulticast
Ipv6OtherStatefulConfig
NetbiosOverTcpipEnabled
Ipv4Enabled
Ipv6Enabled
Ipv6ManagedAddressConfigurationSupported
Mtu
型: DWORD
最大伝送単位 (MTU) サイズ (バイト単位)。
IfType
型: DWORD
インターネット割り当て名機関 (IANA) によって定義されたインターフェイス型。 インターフェイスの種類に使用できる値は、 Ipifcons.h ヘッダー ファイルに一覧表示されます。
次の表に、インターフェイス型の一般的な値を示しますが、他の多くの値を使用できます。
値 | 説明 |
---|---|
|
その他の種類のネットワーク インターフェイス。 |
|
イーサネット ネットワーク インターフェイス。 |
|
トークン リング ネットワーク インターフェイス。 |
|
PPP ネットワーク インターフェイス。 |
|
ソフトウェア ループバック ネットワーク インターフェイス。 |
|
ATM ネットワーク インターフェイス。 |
|
IEEE 802.11 ワイヤレス ネットワーク インターフェイス。
Windows Vista 以降では、ワイヤレス ネットワーク カードは IF_TYPE_IEEE80211として報告されます。 以前のバージョンの Windows では、ワイヤレス ネットワーク カードは IF_TYPE_ETHERNET_CSMACDとして報告されます。 SP3 を使用する Windows XP と SP2 x86 がインストールされた Windows XP の場合は、Windows XP 用ワイヤレス LAN API と SP2 がインストールされている Windows XP では、 WlanEnumInterfaces 関数を使用して、ローカル コンピューター上のワイヤレス インターフェイスを列挙できます。 |
|
トンネル型カプセル化ネットワーク インターフェイス。 |
|
IEEE 1394 (Firewire) の高性能シリアル バス ネットワーク インターフェイス。 |
OperStatus
種類: IF_OPER_STATUS
RFC 2863 で定義されているインターフェイスの動作状態。 詳細については、「http://www.ietf.org/rfc/rfc2863.txt」を参照してください。 このメンバーは、Iftypes.h ヘッダー ファイルで定義されているIF_OPER_STATUS列挙型の値のいずれかになります。 Windows Vista 以降では、ヘッダー ファイルが再構成され、この列挙は Ifdef.h ヘッダー ファイルで定義されています。
Ipv6IfIndex
型: DWORD
IPv6 IP アドレスのインターフェイス インデックス。 インターフェイスで IPv6 が使用できない場合、このメンバーは 0 です。
ZoneIndices[16]
種類: DWORD[16]
sockaddr 構造体の作成に使用される各スコープ レベルのスコープ ID の配列。 SCOPE_LEVEL列挙は、配列のインデックスを作成するために使用されます。 IPv6 では、スコープ ID に基づいて、1 つのインターフェイスに複数の IPv6 マルチキャスト アドレスを割り当てることができます。
FirstPrefix
種類: PIP_ADAPTER_PREFIX
アダプターの IP アダプター プレフィックスのリンクされたリスト内の最初の IP_ADAPTER_PREFIX 構造体へのポインター。
TransmitLinkSpeed
種類: ULONG64
アダプターの送信リンクの現在の速度 (ビット/秒)。
ReceiveLinkSpeed
種類: ULONG64
アダプターの受信リンクの現在の速度 (ビット/秒)。
FirstWinsServerAddress
種類: PIP_ADAPTER_WINS_SERVER_ADDRESS_LH
アダプターの Windows インターネット ネーム サービス (WINS) サーバー アドレスのリンクリスト内の最初の IP_ADAPTER_WINS_SERVER_ADDRESS 構造体へのポインター。
FirstGatewayAddress
種類: PIP_ADAPTER_GATEWAY_ADDRESS_LH
アダプターのゲートウェイのリンクされたリスト内の最初の IP_ADAPTER_GATEWAY_ADDRESS 構造体へのポインター。
Ipv4Metric
種類: ULONG
アダプター アドレスの IPv4 インターフェイス メトリック。 このメンバーは、IPv4 アダプター アドレスにのみ適用されます。
IPv4 のルート設定を計算するために使用される実際のルート メトリックは、MIB_IPFORWARD_ROW2構造の Metric メンバーで指定されたルート メトリック オフセットと、このメンバーで IPv4 用に指定されたインターフェイス メトリックの合計です。
Ipv6Metric
種類: ULONG
アダプター アドレスの IPv6 インターフェイス メトリック。 このメンバーは、IPv6 アダプター アドレスにのみ適用されます。
IPv6 のルート設定の計算に使用される実際のルート メトリックは、MIB_IPFORWARD_ROW2構造の Metric メンバーで指定されたルート メトリック オフセットと、このメンバーで IPv4 用に指定されたインターフェイス メトリックの合計です。
Luid
種類: IF_LUID
アダプター アドレスのインターフェイス LUID。
Dhcpv4Server
種類: SOCKET_ADDRESS
アダプター アドレスの DHCP サーバーの IPv4 アドレス。 このメンバーは、DHCP を使用して構成された IPv4 アダプター アドレスにのみ適用されます。
CompartmentId
種類: NET_IF_COMPARTMENT_ID
アダプター アドレスのルーティング コンパートメント ID。
NetworkGuid
種類: NET_IF_NETWORK_GUID
インターフェイスが属しているネットワークに関連付けられている GUID 。
インターフェイス プロバイダーがネットワーク GUID を提供できない場合、このメンバーは 0 GUID にすることができます。 この場合、インターフェイスは NDIS によって既定のネットワークに登録されました。
ConnectionType
種類: NET_IF_CONNECTION_TYPE
アダプター アドレスのインターフェイス接続の種類。
このメンバーは、Ifdef.h ヘッダー ファイルで定義されているNET_IF_CONNECTION_TYPE列挙型の値のいずれかになります。
TunnelType
種類: TUNNEL_TYPE
アダプター アドレスがトンネルの場合にトンネルによって使用されるカプセル化方法。
Dhcpv6Server
種類: SOCKET_ADDRESS
アダプター アドレスの DHCPv6 サーバーの IPv6 アドレス。 このメンバーは、DHCPv6 を使用して構成された IPv6 アダプター アドレスにのみ適用されます。 この構造体メンバーは現在サポートされておらず、今後の使用のために予約されています。
Dhcpv6ClientDuid[MAX_DHCPV6_DUID_LENGTH]
種類: BYTE[MAX_DHCPV6_DUID_LENGTH]
DHCPv6 クライアントの DHCP 一意識別子 (DUID)。 このメンバーは、DHCPv6 を使用して構成された IPv6 アダプター アドレスにのみ適用されます。
Dhcpv6ClientDuidLength
種類: ULONG
DHCPv6 クライアントの DHCP 一意識別子 (DUID) の長さ (バイト単位)。 このメンバーは、DHCPv6 を使用して構成された IPv6 アダプター アドレスにのみ適用されます。
Dhcpv6Iaid
種類: ULONG
DHCPv6 クライアントによって選択された ID 関連付けの識別子。 このメンバーは、DHCPv6 を使用して構成された IPv6 アダプター アドレスにのみ適用されます。
FirstDnsSuffix
種類: PIP_ADAPTER_DNS_SUFFIX
アダプターの DNS サフィックスのリンクされたリスト内の最初の IP_ADAPTER_DNS_SUFFIX 構造体へのポインター。
解説
GetAdaptersAddresses 関数は、IPv4 アドレスと IPv6 アドレスの情報を取得し、この情報をIP_ADAPTER_ADDRESSES構造体のリンクされたリストとして返します
IfIndex メンバーと Ipv6IfIndex メンバーで指定されたアダプター インデックス値は、アダプターが無効になった後に有効になった場合、またはその他の状況で変更される可能性があり、永続的と見なすべきではありません。
IfType メンバーの値は、Ipifcons.h ヘッダー ファイルで定義されます。 IfType メンバーの説明に記載されている使用可能な値のみが現在サポートされています。
SP1 以降の Windows XP では 、IP_ADAPTER_ADDRESSES 構造のサイズが変更されました。 IP_ADAPTER_ADDRESSES構造のサイズも Windows Vista 以降で変更されました。 IP_ADAPTER_ADDRESSES構造のサイズは、SP1 以降の Windows Vista および Windows Server 2008 以降でも変更されました。 Length メンバーを使用して、使用されているIP_ADAPTER_ADDRESSES構造体のバージョンを確認する必要があります。
SP1 以降の Windows XP の IP_ADAPTER_ADDRESSES 構造のバージョンには、 Ipv6IfIndex、 ZoneIndices、 FirstPrefix という新しいメンバーが追加されています。
Windows Vista 以降のIP_ADAPTER_ADDRESSES構造のバージョンには、TransmitLinkSpeed、ReceiveLinkSpeed、FirstWinsServerAddress、FirstGatewayAddress、Ipv4Metric、Ipv6Metric、Luid、Dhcpv4Server、CompartmentId、NetworkGuid、ConnectionType、TunnelType、Dhcpv6Server、Dhcpv6ClientDuid、という新しいメンバーが追加されています。Dhcpv6ClientDuidLength および Dhcpv6Iaid。
SP1 以降および Windows Server 2008 以降の Windows Vista 上の IP_ADAPTER_ADDRESSES 構造のバージョンには、 FirstDnsSuffix という新しいメンバーが追加されています。
Ipv4Metric および Ipv6Metric メンバーは、ローカル コンピューター上の複数のインターフェイスに接続されているルートのルート メトリックに優先順位を付けるために使用されます。
GetAdaptersAddresses 関数によって返される FirstUnicastAddress メンバーが指すリンクされたIP_ADAPTER_UNICAST_ADDRESS構造体の順序は、IP アドレスがアダプターに追加された順序を反映せず、Windows のバージョンによって異なる場合があります。 同様に、FirstAnycastAddress メンバーが指すリンクされたIP_ADAPTER_ANYCAST_ADDRESS構造体の順序と、FirstMulticastAddress メンバーが指すリンクされたIP_ADAPTER_MULTICAST_ADDRESS構造体の順序は、IP アドレスがアダプターに追加された順序を反映せず、Windows のバージョンによって異なる場合があります。
さらに、FirstUnicastAddress メンバーが指すリンクされたIP_ADAPTER_UNICAST_ADDRESS構造体と、FirstPrefix メンバーが指すリンクされたIP_ADAPTER_PREFIX構造体は、オペレーティング システムによって個別の内部リンク リストとして保持されます。 その結果、FirstUnicastAddress メンバーが指すリンクされたIP_ADAPTER_UNICAST_ADDRESS構造体の順序は、FirstPrefix メンバーが指すリンクされたIP_ADAPTER_PREFIX構造体の順序と関係がありません。
Windows Vista 以降では、FirstPrefix メンバーが指すリンクされたIP_ADAPTER_PREFIX構造には、アダプターに割り当てられた各 IP アドレスに対して 3 つの IP アダプター プレフィックスが含まれます。 これには、ホスト IP アドレス プレフィックス、サブネット IP アドレス プレフィックス、サブネット ブロードキャスト IP アドレス プレフィックスが含まれます。 さらに、アダプターごとにマルチキャスト アドレス プレフィックスとブロードキャスト アドレス プレフィックスがあります。
Windows Vista より前の SP1 以降の Windows XP では、FirstPrefix メンバーが指すリンクされたIP_ADAPTER_PREFIX構造には、アダプターに割り当てられた IP アドレスごとに 1 つの IP アダプター プレフィックスのみが含まれます。
Windows SDK では、Windows Vista 以降で使用する構造体のバージョンは 、IP_ADAPTER_ADDRESSES_LHとして定義されます。 Microsoft Windows Software Development Kit (SDK) では、SP1 以降の Windows XP を含む以前のシステムで使用されるこの構造のバージョンは 、IP_ADAPTER_ADDRESSES_XPとして定義されています。 ターゲット プラットフォームが Windows Vista 以降 (NTDDI_VERSION >= NTDDI_LONGHORN
、、または WINVER >= 0x0600
) の場合にアプリケーションをコンパイルする場合、_WIN32_WINNT >= 0x0600
IP_ADAPTER_ADDRESSES_LH構造体は IP_ADAPTER_ADDRESSES 構造体に型定義されます。 ターゲット プラットフォームが Windows Vista 以降でない場合にアプリケーションをコンパイルする場合、 IP_ADAPTER_ADDRESSES_XP 構造体は IP_ADAPTER_ADDRESSES 構造体に型定義されます。
SOCKET_ADDRESS構造体は、IP_ADAPTER_ADDRESSES構造体で使用されます。 Windows Vista 以降用にリリースされた Windows SDK では、ヘッダー ファイルのorganizationが変更され、SOCKET_ADDRESS構造は、Winsock2.h ヘッダー ファイルによって自動的に含まれる Ws2def.h ヘッダー ファイルで定義されます。 Windows Server 2003 および Windows XP 用にリリースされたプラットフォーム ソフトウェア開発キット (SDK) では、 SOCKET_ADDRESS 構造が Winsock2.h ヘッダー ファイルで宣言されています。 IP_ADAPTER_ADDRESSES構造体を使用するには、Iphlpapi.h ヘッダー ファイルの前に Winsock2.h ヘッダー ファイルを含める必要があります。
例
次の使用例は、システムに関連付けられているアダプターの IP_ADAPTER_ADDRESSES 構造を取得し、各アダプター インターフェイスのメンバーを出力します。
#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;
}
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
Header | iptypes.h (Iphlpapi.h を含む) |
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示