GetIpPathTable 関数
GetIpPathEntry 関数は、ローカル コンピューター上の IP パス エントリの情報を取得します。
構文
NETIOAPI_API GetIpPathTable(
_In_ ADDRESS_FAMILY Family,
_Out_ PMIB_IPPATH_TABLE *Table
);
パラメーター
ファミリ [in]
取得するアドレス ファミリ。アドレス ファミリに使用できる値は、Winsock2.h ヘッダー ファイルに一覧表示されます。 AF_ アドレス ファミリ定数と PF_ プロトコル ファミリ定数の値は同じ (たとえば、AF_INET と PF_INET) なので、どちらの定数も使用できます。
Windows Vista 以降のバージョンの Windows オペレーティング システムでは、Family パラメーターに使用できる値は Ws2def.h ヘッダー ファイルで定義されています。 Ws2def.h ヘッダー ファイルは Netioapi.h に自動的に含まれるので、Ws2def.h を直接使用しないでください。
現在、アドレス ファミリでは次の値がサポートされています:
AF_INET
IPv4 アドレス ファミリ。 この値を指定すると、この関数は IPv4 エントリのみを含む IP パス テーブルを返します。AF_INET6
IPv6 アドレス ファミリ。 この値を指定すると、この関数は IPv6 エントリのみを含む IP パス テーブルを返します。AF_UNSPEC
アドレス ファミリは指定されていません。 この値を指定すると、この関数は IPv4 と IPv6 エントリのみを含む IP パス テーブルを返します。
テーブル [out]
ローカル コンピューター上の IP パス エントリのテーブルを含む MIB_IPPATH_TABLE 構造体へのポインター。
戻り値
関数が成功した場合、GetIpPathEntry は STATUS_SUCCESS を返します。
関数が失敗した場合、GetIpPathEntry は次のいずれかのエラー コードを返します:
リターン コード | 説明 |
---|---|
STATUS_INVALID_PARAMETER | その関数に渡された無効なパラメーター。 このエラーは、Table パラメーターに NULL ポインターが渡された場合、または Family パラメーターが AF_INET、AF_INET6、または AF_UNSPEC として指定されていない場合に返されます。 |
STATUS_NOT_ENOUGH_MEMORY | 操作を完了するために使用できるメモリ リソースが不足しています。 |
STATUS_NOT_FOUND | Family パラメーターで指定されている IP パス エントリが見つかりませんでした。 |
STATUS_NOT_SUPPORTED | 要求はサポートされていません。 このエラーは、IPv4 スタックがローカル コンピューターに存在せず、AF_INET が Family パラメーターで指定された場合、またはローカル コンピューターに IPv6 スタックが存在せず、AF_INET6 が Family パラメーターで指定されている場合に返されます。 このエラーは、この関数がサポートされていない Windows のバージョンでも返されます。 |
その他 | FormatMessage 関数を使用して、返されたエラーのメッセージ文字列を取得します。 |
解説
GetIpPathTable 関数は、ローカル コンピューター上の IP パス エントリを列挙し、MIB_IPPATH_TABLE 構造体でこの情報を返します。
GetIpPathTable は、Table パラメーターが指すバッファー内の MIB_IPPATH_TABLE 構造体の IP パス エントリを返します。 MIB_IPPATH_TABLE 構造体には、IP パス エントリ数と、各 IP パス エントリの MIB_IPPATH_ROW 構造体の配列が含まれています。 これらの返された構造体が不要になった場合、ドライバーは FreeMibTable を呼び出してメモリを解放する必要があります。
ドライバーは、Family パラメーターを AF_INET、AF_INET6、または AF_UNSPEC のいずれかに初期化する必要があります。
Table パラメーターが指す返された MIB_IPPATH_TABLE 構造体には、NumEntries メンバーと MIB_IPPATH_TABLE 構造体の Table メンバーの最初の MIB_IPPATH_ROW 配列エントリとの間に、整列のためのパディングが含まれている可能性があることに注意してください。 整列のためのパディングは、MIB_IPPATH_ROW 配列エントリ間にも存在する場合があります。 MIB_IPPATH_ROW 配列エントリへのアクセスには、パディングが存在する可能性があることを前提とするべきです。
要件
対象プラットフォーム |
ユニバーサル |
バージョン |
Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
ヘッダー |
Netioapi.h (Netioapi.h を含む) |
ライブラリ |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |