GetIpInterfaceEntry 関数

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

構文

NETIOAPI_API GetIpInterfaceEntry(
  _Inout_ PMIB_IPINTERFACE_ROW Row
);

パラメーター

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

戻り値

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

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

リターン コード 説明
STATUS_INVALID_PARAMETER

その関数に渡された無効なパラメーター。 このエラーは、Row パラメーターに NULL ポインターが渡された場合、Row パラメーターが指す MIB_IPINTERFACE_ROW 構造体の Family メンバーに AF_INET または AF_INET6 が指定されていない場合、または MIB_IPINTERFACE_ROW 構造体の InterfaceLuid メンバーと InterfaceIndex メンバーが指定されていない場合に返されます。

STATUS_NOT_FOUND

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

その他

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

解説

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

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

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

出力時に、GetIpInterfaceEntryRow パラメーターが指す 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 アドレスのインターフェイスに制限されます。 潜在的なルートのリストには、インターネットへのトラフィックを可能にする VPN インターフェイスのルートさえも含まれていないため、RAS によるルート メトリックの変更は効果がありません。 ドライバーは、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