GetIpInterfaceEntry 関数 (netioapi.h)
GetIpInterfaceEntry 関数は、ローカル コンピューター上の指定したインターフェイスの IP 情報を取得します。
構文
IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API GetIpInterfaceEntry(
[in, out] PMIB_IPINTERFACE_ROW Row
);
パラメーター
[in, out] Row
正常に戻った場合にローカル コンピューター上のインターフェイスの情報を受け取る、 MIB_IPINTERFACE_ROW 構造体へのポインター。 入力時に、MIB_IPINTERFACE_ROWの InterfaceLuid メンバーまたは InterfaceIndex メンバーを、情報を取得するインターフェイスに設定する必要があります。
戻り値
関数が成功した場合、戻り値はNO_ERROR。
関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。
リターン コード | 説明 |
---|---|
|
指定されたファイルが見つかりません。 Row パラメーターが指すMIB_IPINTERFACE_ROWの InterfaceLuid メンバーまたは InterfaceIndex メンバーによって指定されたネットワーク インターフェイス LUID またはインターフェイス インデックスがローカル コンピューター上の値ではない場合、このエラーが返されます。 |
|
無効なパラメーターが関数に渡されました。 Row パラメーターに NULL ポインターが渡された場合、Row パラメーターが指すMIB_IPINTERFACE_ROWの Family メンバーがAF_INETまたはAF_INET6として指定されていない場合、または Row パラメーターが指すMIB_IPINTERFACE_ROWの InterfaceLuid メンバーまたは InterfaceIndex メンバーの両方が指定されていない場合、このエラーが返されます。 |
|
Element not found. Row パラメーターが指すMIB_IPINTERFACE_ROW構造体の InterfaceLuid メンバーまたは InterfaceIndex メンバーによって指定されたネットワーク インターフェイスが、MIB_IPINTERFACE_ROW構造体の Family メンバーで指定された IP アドレス ファミリと一致しない場合、このエラーが返されます。 |
|
FormatMessage 関数を使用して、返されたエラーのメッセージ文字列を取得します。 |
注釈
GetIpInterfaceEntry 関数は、Windows Vista 以降で定義されています。
入力時に、Row パラメーターが指すMIB_IPINTERFACE_ROW構造体の Family メンバーは、AF_INETまたはAF_INET6に初期化する必要があります。 入力に加えて、Row パラメーターを指す MIB_IPINTERFACE_ROW 構造体の少なくとも 1 つのメンバーを初期化する必要があります: InterfaceLuid または InterfaceIndex。
フィールドは、上記の順序で使用されます。 したがって、 InterfaceLuid が指定されている場合は、このメンバーを使用してインターフェイスが決定されます。 InterfaceLuid メンバーに値が設定されていない場合 (このメンバーの値が 0 に設定されました)、InterfaceIndex メンバーが次に使用されてインターフェイスが決定されます。
出力時に、InterfaceIndex が指定されている場合、Row パラメーターが指すMIB_IPINTERFACE_ROW構造体の InterfaceLuid メンバーが入力されます。 Row パラメーターによって指MIB_IPINTERFACE_ROW構造体の他のメンバーも入力されます。
InitializeIpInterfaceEntry 関数を使用して、MIB_IPINTERFACE_ROW構造体エントリのフィールドを既定値で初期化する必要があります。 アプリケーションは、変更する MIB_IPINTERFACE_ROW エントリのフィールドを変更し、 SetIpInterfaceEntry 関数を呼び出すことができます。
異なるセキュリティ要件を持つ複数のネットワークへの特権のない同時アクセスにより、セキュリティホールが作成され、特権のないアプリケーションが誤って 2 つのネットワーク間でデータを中継できるようになります。 一般的な例は、仮想プライベート ネットワーク (VPN) とインターネットへの同時アクセスです。 Windows Server 2003 および Windows XP では、弱いホスト モデルが使用されます。RAS では、他のインターフェイス上のすべての既定のルートのルート メトリックを増やすことによって、このような同時アクセスが防止されます。 したがって、すべてのトラフィックは VPN インターフェイスを介してルーティングされ、他のネットワーク接続が中断されます。
Windows Vista 以降では、強力なホスト モデルが既定で使用されます。 GetBestRoute2 または GetBestRoute を使用したルート参照でソース IP アドレスが指定されている場合、ルート参照はソース IP アドレスのインターフェイスに制限されます。 RAS によるルート メトリックの変更は、潜在的なルートの一覧に VPN インターフェイスのルートがないため、インターネットへのトラフィックも許可されないため、影響はありません。 MIB_IPINTERFACE_ROWの DisableDefaultRoutes メンバーを使用すると、インターフェイスで既定のルートを使用して無効にすることができます。 このメンバーは、VPN クライアントによって分割トンネリングが必要ない場合に分割トンネリングを制限するために、VPN クライアントによるセキュリティ対策として使用できます。 VPN クライアントは SetIpInterfaceEntry 関数を呼び出して、必要に応じて DisableDefaultRoutes メンバーを TRUE に設定できます。 VPN クライアントは、GetIpInterfaceEntry 関数を呼び出すことによって、DisableDefaultRoutes メンバーの現在の状態を照会できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | netioapi.h (Iphlpapi.h を含む) |
Library | Iphlpapi.lib |
[DLL] | Iphlpapi.dll |