GetAdaptersAddresses

ローカルコンピュータのアダプタに関連付けられたアドレスを取得する。

GetAdaptersAddresses Family, Flags, Reserved, AdapterAddresses, SizePointer

Family : [int] 
Flags : [int] 取得するアドレスの種類。指定可能な値は Iptypes.h で定義される。Iptypes.h は Iphlpapi.h から自動的にインクルードされるため直接使用してはならない。
Reserved : [intptr] 現在未使用で、将来のシステム使用のために予約されている。呼び出し元は NULL を渡すこと。
AdapterAddresses : [var] 成功時に IP_ADAPTER_ADDRESSES 構造体の連結リストを受け取るバッファへのポインタ。
SizePointer : [var] AdapterAddresses が指すバッファのサイズを指定する変数へのポインタ。

(プラグイン / モジュール : iphlpapi.dll)

解説

ローカルコンピュータのアダプタに関連付けられたアドレスを取得する。

[戻り値]
関数が成功すると ERROR_SUCCESS (NO_ERROR と同値)
を返す。失敗した場合の戻り値は以下のいずれかのエラーコードとなる。
このドキュメントは省略されている。

[備考]
GetAdaptersAddresses 関数は IPv4 / IPv6 両方のアドレス情報を取得できる。アドレスは
IP_ADAPTER_ADDRESSES 構造体の連結リストとして AdapterAddresses
に返される。呼び出し元はバッファを確保し、不要になったら解放する責任がある (HeapAlloc / HeapFree
等。確保と解放は同じ関数ファミリを使うこと)。GetAdaptersAddresses
は同期呼び出しのみ。低レベルインターフェイステーブルを走査するため、かなりのリソースと時間を要する。必要なバッファサイズを得るには、まず小さいバッファで呼び出して
ERROR_BUFFER_OVERFLOW を得る方法もあるが、この方法は複数回呼び出しが必要になり推奨されない。推奨は 15KB
のバッファを事前確保する方法で、大半のケースで一発で成功する。Windows 10
より前ではアダプタの順序はネットワーク接続フォルダの詳細設定から制御できたが、Windows 10 以降では IPv4 / IPv6
の経路メトリックで決まる。GAA_FLAG_INCLUDE_ALL_INTERFACES を指定すると Family
に束縛されていないアドレスも含め全 NDIS アダプタを取得する。IP_ADAPTER_ADDRESSES 構造体のサイズは
Windows XP SP1、Windows Vista、Vista SP1 / Server 2008 で変更されている。Length
メンバでバージョンを判別できる。GetIpAddrTable はローカルコンピュータのインターフェイスから IPv4
アドレスへのマッピングテーブルを MIB_IPADDRTABLE で取得する。Windows Server 2003 以前の
Platform SDK では戻り値型が ULONG ではなく DWORD と定義されていた。IP_ADAPTER_ADDRESSES
では SOCKET_ADDRESS 構造体が使われる。Windows Vista 以降では Ws2def.h (Winsock2.h
から自動インクルード) で定義され、Windows Server 2003 / XP の Platform SDK では
Winsock2.h で宣言される。IP_ADAPTER_ADDRESSES を使うには Iphlpapi.h の前に
Winsock2.h をインクルードする必要がある。

情報

プラグイン / モジュールiphlpapi.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の iphlpapi.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_iphlpapi_gen2.hs