次の方法で共有


GetIpInterfaceEntry 関数

GetIpInterfaceEntry 関数は、ローカル コンピューター上の指定されたインターフェイスの IP 情報を取得します。

構文

NETIOAPI_API GetIpInterfaceEntry(
  _Inout_ PMIB_IPINTERFACE_ROW Row
);

パラメーター

  • [入力、出力]
    正常に戻った場合にローカル コンピューター上のインターフェイスの情報を受け取る MIB_IPINTERFACE_ROW 構造体へのポインター。 入力時に、ドライバーは、InterfaceLuid メンバー、またはMIB_IPINTERFACE_ROWの InterfaceIndex メンバーをインターフェイスに設定して情報を取得する必要があります。

戻り値

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

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

リターン コード 形容
STATUS_INVALID_PARAMETER

無効なパラメーターが関数に渡されました。 このエラーは、NULL ポインターが Row パラメーターで渡された場合に返されます。 Row パラメーターが指すMIB_IPINTERFACE_ROW構造体の ファミリ メンバーが、AF_INETまたはAF_INET6として指定されていないか、MIB_IPINTERFACE_ROW構造体の InterfaceLuid および InterfaceIndex メンバーが指定されていません。

STATUS_NOT_FOUND

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

その他の

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

備考

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

  • ファミリ
    AF_INETまたはAF_INET6に設定します。

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

出力時に、GetIpInterfaceEntry は、Row パラメーターが指すMIB_IPINTERFACE_ROW構造体の残りのメンバーを入力します。

ドライバーは、InitializeIpInterfaceEntry 関数を使用して、既定値でMIB_IPINTERFACE_ROW構造体エントリのフィールドを初期化する必要があります。 ドライバーは、変更するMIB_IPINTERFACE_ROWエントリ内のフィールドを変更し、SetIpInterfaceEntry 関数を呼び出すことができます。

セキュリティ要件が異なる複数のネットワークへの特権のない同時アクセスにより、セキュリティ ホールが作成され、特権のないドライバーが 2 つのネットワーク間で誤ってデータを中継できるようになります。 一般的な例として、仮想プライベート ネットワーク (VPN) とインターネットへの同時アクセスがあります。 Windows Server 2003 および Windows XP オペレーティング システムでは、弱いホスト モデルが使用されます。リモート アクセス サービス (RAS) では、他のインターフェイス上のすべての既定のルートのルート メトリックを増やすことで、このような同時アクセスが防止されます。 そのため、すべてのトラフィックが VPN インターフェイス経由でルーティングされ、他のネットワーク接続が中断されます。

Windows Vista 以降のバージョンの Windows オペレーティング システムでは、既定では強力なホスト モデルが使用されます。 GetBestRoute2 関数を使用してルート参照で送信元 IP アドレスが指定されている場合、ルート参照はソース IP アドレスのインターフェイスに制限されます。 RAS によるルート メトリックの変更は、潜在的なルートの一覧に VPN インターフェイスのルートも含まれていないため、影響はありません。これにより、インターネットへのトラフィックが有効になります。 ドライバーは、MIB_IPINTERFACE_ROWの DisableDefaultRoutes メンバーを使用して、インターフェイスの既定のルートを使用して無効にすることができます。 VPN クライアントは、このメンバーをセキュリティ対策として使用して、VPN クライアントで分割トンネリングが必要ない場合に分割トンネリングを制限できます。 VPN クライアントは、SetIpInterfaceEntry 関数を呼び出して、DisableDefaultRoutes メンバーを必要に応じて TRUE 設定できます。 VPN クライアントは、GetIpInterfaceEntry 関数を呼び出すことによって、DisableDefaultRoutes メンバーの現在の状態を照会できます。

必要条件

ターゲット プラットフォーム

ユニバーサル

バージョン

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

ヘッダ

Netioapi.h (Netioapi.h を含む)

図書館

Netio.lib

IRQL

< DISPATCH_LEVEL

関連項目

GetBestRoute2

GetIfEntry2する

GetIfTable2する

GetIfTable2Ex

GetIpInterfaceTable

MIB_IF_ROW2

MIB_IF_TABLE2

MIB_IPINTERFACE_ROW

MIB_IPINTERFACE_TABLE

SetIpInterfaceEntry