ResolveIpNetEntry2 関数 (netioapi.h)

ResolveIpNetEntry2 関数は、ローカル コンピューター上の近隣 IP アドレス エントリの物理アドレスを解決します。

構文

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API ResolveIpNetEntry2(
  [in, out]      PMIB_IPNET_ROW2     Row,
  [in, optional] const SOCKADDR_INET *SourceAddress
);

パラメーター

[in, out] Row

近隣 IP アドレス エントリの MIB_IPNET_ROW2 構造体エントリへのポインター。 正常に戻ると、この構造体は近隣 IP アドレスのプロパティで更新されます。

[in, optional] SourceAddress

近隣 IP アドレス エントリに対する要求を送信するインターフェイスを選択するために使用される、オプションのソース IP アドレスへのポインター。

戻り値

関数が成功した場合、戻り値はNO_ERROR。

関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。

リターン コード 説明
ERROR_BAD_NET_NAME
ネットワーク名が見つかりません。 このエラーは、近隣 IP アドレスを持つネットワークに到達できない場合に返されます。
ERROR_INVALID_PARAMETER
無効なパラメーターが関数に渡されました。 Row パラメーターに NULL ポインターが渡された場合、Row パラメーターが指すMIB_IPNET_ROW2Address メンバーが有効な IPv4 アドレスまたは IPv6 アドレスに設定されていない場合、または Row パラメーターが指すMIB_IPNET_ROW2InterfaceLuid メンバーまたは InterfaceIndex メンバーの両方が指定されていない場合、このエラーが返されます。 このエラーは、ループバック アドレスが Address メンバーで渡された場合にも返されます。
ERROR_NOT_FOUND
指定したインターフェイスが見つかりませんでした。 Row パラメーターが指すMIB_IPNET_ROW2InterfaceLuid メンバーまたは InterfaceIndex メンバーによって指定されたネットワーク インターフェイスが見つからなかった場合、このエラーが返されます。
ERROR_NOT_SUPPORTED
要求はサポートされていません。 このエラーは、ローカル コンピューター上に IPv4 スタックがなく、Row パラメーターが指すMIB_IPNET_ROW2Address メンバーに IPv4 アドレスが指定されている場合、またはローカル コンピューター上に IPv6 スタックがなく、アドレス メンバーに IPv6 アドレスが指定されていない場合に返されます。
その他
FormatMessage を使用して、返されたエラーのメッセージ文字列を取得します。

注釈

ResolveIpNetEntry2 関数は、Windows Vista 以降で定義されています。

ResolveIpNetEntry2 関数は、ローカル コンピューター上の近隣 IP アドレス エントリの物理アドレスを解決するために使用されます。 この関数は、インターフェイス上の IP アドレスと一致する既存の近隣エントリをフラッシュし、IPv4 アドレスの ARP 要求または IPv6 アドレスの近隣要請要求を送信して物理アドレス (MAC) アドレスを解決します。 SourceAddress パラメーターが指定されている場合、ResolveIpNetEntry2 関数は、このソース IP アドレスを持つインターフェイスを選択して要求を送信します。 SourceAddress パラメーターが指定されていない場合 (このパラメーターに NULL が渡されました)、ResolveIpNetEntry2 関数は、要求を送信する最適なインターフェイスを自動的に選択します。

Row パラメーターが指すMIB_IPNET_ROW2構造体の Address メンバーは、有効な IPv4 または IPv6 アドレスとファミリに初期化する必要があります。 さらに、Row パラメーターを指すMIB_IPNET_ROW2構造体の少なくとも 1 つのメンバーをインターフェイスに初期化する必要があります。 InterfaceLuid または InterfaceIndex

フィールドは、上記の順序で使用されます。 したがって、 InterfaceLuid が指定されている場合は、このメンバーを使用して、ユニキャスト IP アドレスを追加するインターフェイスを決定します。 InterfaceLuid メンバーに値が設定されていない場合 (このメンバーの値が 0 に設定されました)、InterfaceIndex メンバーが次に使用されてインターフェイスが決定されます。

Row パラメーターが指すMIB_IPNET_ROW2Address メンバーで渡された IP アドレスが、インターフェイス上の既存の近隣 IP アドレスの複製である場合、ResolveIpNetEntry2 関数は、IP アドレスを解決する前に既存のエントリをフラッシュします。

呼び出しが成功すると、ResolveIpNetEntry2 は近隣 IP アドレスの他のプロパティを取得し、Row パラメーターが指すMIB_IPNET_ROW2構造体に入力します。 Row パラメーターが指すMIB_IPNET_ROW2構造体の PhysicalAddress メンバーと PhysicalAddressLength メンバーは、有効な物理アドレスに初期化されます。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー netioapi.h (Iphlpapi.h を含む)
Library Iphlpapi.lib
[DLL] Iphlpapi.dll

こちらもご覧ください

CreateIpNetEntry2

DeleteIpNetEntry2

FlushIpNetTable2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_ROW2

MIB_IPNET_TABLE2

SOCKADDR_INET

SetIpNetEntry2