次の方法で共有


GetIpNetTable2 関数

GetIpNetTable2 関数は、ローカル コンピューター上の IP 近隣テーブルを取得します。

構文

NETIOAPI_API GetIpNetTable2(
  _In_  ADDRESS_FAMILY    Family,
  _Out_ PMIB_IPNET_TABLE2 *Table
);

パラメーター

  • ファミリ [in]
    取得するアドレス ファミリ。

    アドレス ファミリに使用できる値は、Winsock2.h ヘッダー ファイルに一覧表示されます。 AF_ アドレス ファミリ定数とPF_ プロトコル ファミリ定数の値は同じ (たとえば、AF_INETとPF_INET) ので、どちらの定数も使用できます。

    Windows Vista 以降のバージョンの Windows オペレーティング システムでは、ws2def.h ヘッダー ファイルで Family パラメーターに指定できる値が定義されています。 Ws2def.h ヘッダー ファイルは Netioapi.h に自動的に含まれるので、Ws2def.h を直接使用しないでください。

    現在、アドレス ファミリでは次の値がサポートされています。

    • AF_INET
      IPv4 アドレス ファミリ。 この値を指定すると、この関数は IPv4 エントリのみを含む近隣 IP アドレス テーブルを返します。

    • AF_INET6
      IPv6 アドレス ファミリ。 この値を指定すると、この関数は IPv6 エントリのみを含む近隣 IP アドレス テーブルを返します。

    • AF_UNSPEC
      アドレス ファミリは指定されていません。 この値を指定すると、この関数は IPv4 エントリと IPv6 エントリの両方を含む近隣 IP アドレス テーブルを返します。

  • テーブル [out]
    ローカル コンピューター上の近隣 IP アドレス エントリのテーブルを含む MIB_IPNET_TABLE2 構造体へのポインター。

戻り値

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

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

リターン コード 形容
STATUS_INVALID_PARAMETER

無効なパラメーターが関数に渡されました。 このエラーは、NULL ポインターが Table パラメーターで渡された場合、または Family パラメーターがAF_INET、AF_INET6、またはAF_UNSPECとして指定されていない場合に返されます。

STATUS_NOT_ENOUGH_MEMORY

操作を完了するために使用できるメモリ リソースが不足しています。

STATUS_NOT_FOUND

ファミリ パラメーターで指定されている近隣 IP アドレス エントリが見つかりませんでした。

STATUS_NOT_SUPPORTED

要求はサポートされていません。 このエラーは、ローカル コンピューターに IPv4 スタックが存在せず、AF_INETが Family パラメーターで指定された場合、またはローカル コンピューターに IPv6 スタックがなく、ファミリ パラメーターに AF_INET6 が指定されている場合に返されます。 このエラーは、この関数がサポートされていない Windows のバージョンでも返されます。

その他の

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

備考

GetIpNetTable2 関数は、ローカル コンピューター上の近隣 IP アドレスを列挙し、この情報を MIB_IPNET_TABLE2 構造で返します。

getIpNetTable2 は、Table パラメーターが指すバッファー内のMIB_IPNET_TABLE2構造体内の近隣 IP アドレス エントリを返します。 MIB_IPNET_TABLE2構造体には、近隣 IP アドレス エントリ数と、各近隣 IP アドレス エントリの MIB_IPNET_ROW2 構造体の配列が含まれています。 これらの返された構造体が不要になったら、FreeMibTableを呼び出して、ドライバーメモリを解放する必要があります。

ドライバーは、AF_INET、AF_INET6、またはAF_UNSPECに ファミリ パラメーターを初期化する必要があります。

Table パラメーターが指す返されるMIB_IPNET_TABLE2構造体には、NumEntries メンバーと、MIB_IPNET_TABLE2構造体の Table メンバー内の最初のMIB_IPNET_ROW2配列エントリとの間の配置のためのパディングが含まれている可能性があることに注意してください。 配置のためのパディングは、MIB_IPNET_ROW2配列エントリ間に存在する場合もあります。 MIB_IPNET_ROW2配列エントリへのアクセスには、パディングが存在する可能性があると想定する必要があります。

必要条件

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

ユニバーサル

バージョン

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

ヘッダ

Netioapi.h (Netioapi.h を含む)

図書館

Netio.lib

IRQL

< DISPATCH_LEVEL

関連項目

CreateIpNetEntry2

FlushIpNetTable2

FreeMibTableする

GetIpNetEntry2

MIB_IPNET_ROW2

MIB_IPNET_TABLE2

ResolveIpNetEntry2

SetIpNetEntry2