ResolveIpNetEntry2 関数

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

構文

NETIOAPI_API ResolveIpNetEntry2(
  _Inout_        PMIB_IPNET_ROW2 Row,
  _In_opt_ const SOCKADDR_INET   *SourceAddress
);

パラメーター

  • Row [in, out]
    近接 IP アドレス エントリの MIB_IPNET_ROW2 構造体エントリへのポインター。 正常に返されると、この構造体は近接 IP アドレスのプロパティで更新されます。

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

戻り値

関数が成功した場合、ResolveIpNetEntry2 は STATUS_SUCCESS を返します。

関数が失敗した場合、ResolveIpNetEntry2 は次のいずれかのエラー コードを返します:

リターン コード 説明
STATUS_BAD_NETWORK_NAME

ネットワーク名が見つかりません。 このエラーは、近隣 IP アドレスを持つネットワークに到達できない場合に返されます。

STATUS_INVALID_PARAMETER

その関数に無効なパラメーターが渡された。 このエラーは、Row パラメーターに NULL ポインターが渡された場合、Row パラメーターが指す MIB_IPNET_ROW2 構造体の Address メンバーに有効な IPv4 または IPv6 アドレスが設定されていない場合、または MIB_IPNET_ROW2 構造体の InterfaceLuid メンバーと InterfaceIndex メンバーの両方が指定されていない場合に返されます。 このエラーは、ループバック アドレスが Address メンバーで渡された場合にも返されます。

STATUS_NOT_FOUND

指定されたインターフェイスが見つかりませんでした。 このエラーは、Row パラメーターが指す MIB_IPNET_ROW2 構造体の InterfaceLuid メンバーまたは InterfaceIndex メンバーで指定されるネットワーク インターフェイスを関数が見つけられない場合に返されます。

STATUS_NOT_SUPPORTED

要求はサポートされていません。 このエラーは、ローカル コンピューターに IPv4 スタックが存在せず、Row パラメーターが指す MIB_IPNET_ROW2 構造体の Address メンバーに IPv4 アドレスが指定されていた場合、またはローカル コンピュータに IPv6 スタックが存在せず、Address メンバーに IPv6 アドレスが指定されていた場合に返されます。

その他

FormatMessage 関数を使用して、返されたエラーのメッセージ文字列を取得します。

解説

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

ドライバーは、Row パラメーターが指す MIB_IPNET_ROW2 構造体の次のメンバーを初期化する必要があります。

  • 住所
    有効な IPv4 または IPv6 アドレスとファミリに設定します。

  • InterfaceLuid または InterfaceIndex
    これらのメンバーは、前に示した順序で使用されます。 したがって、InterfaceLuid が指定されている場合は、このメンバーを使用してインターフェイスが決定されます。 InterfaceLuid メンバーに値が設定されていない (このメンバーの値がゼロに設定されている) 場合は、InterfaceIndex メンバーが次にインターフェイスを決定するために使用されます。

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

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

要件

対象プラットフォーム

ユニバーサル

バージョン

Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。

ヘッダー

Netioapi.h (Netioapi.h を含む)

ライブラリ

Netio.lib

IRQL

< DISPATCH_LEVEL

関連項目

CreateIpNetEntry2

DeleteIpNetEntry2

FlushIpNetTable2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_ROW2

MIB_IPNET_TABLE2

SetIpNetEntry2