次の方法で共有


GetIfTable2Ex 関数

GetIfTable2Ex 関数は、取得するインターフェイス情報のレベルを指定して、MIB-II インターフェイス テーブルを取得します。

構文

NETIOAPI_API GetIfTable2Ex(
  _In_  MIB_IF_TABLE_LEVEL Level,
  _Out_ PMIB_IF_TABLE2     *Table
);

パラメーター

  • レベル [入力]
    取得するインターフェイス情報のレベル。 このパラメーターには、MIB_IF_TABLE_LEVEL 列挙体の値のいずれかを指定できます。

  • テーブル [out]
    MIB_IF_TABLE2 構造体内のインターフェイスのテーブルを受け取るバッファーへのポインター。

戻り値

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

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

リターン コード 形容
STATUS_INVALID_PARAMETER

無効なパラメーターが関数に渡されました。 このエラーは、Level パラメーターに無効な値が渡された場合に返されます。

STATUS_NOT_ENOUGH_MEMORY

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

その他の

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

備考

GetIfTable2Ex 関数は、ローカル コンピューター上の論理インターフェイスと物理インターフェイスを列挙し、この情報を MIB_IF_TABLE2 構造体で返します。

ドライバーは、GetIfTable2同様の関数を使用してインターフェイスを取得できますが、GetIfTable2 では、ドライバーが返すインターフェイスのレベルを指定できません。 Level パラメーターを MibIfTableNormal に設定した GetIfTable2Ex 関数の呼び出しは、GetIfTable2 関数を呼び出すのと同じ結果を取得します。

GetIfTable2Ex は、Table パラメーターが指すバッファー内のMIB_IF_TABLE2構造体内のインターフェイスを返します。 MIB_IF_TABLE2構造体には、インターフェイス数と、各インターフェイスの MIB_IF_ROW2 構造体の配列が含まれています。 GetIfTable2 は、MIB_IF_TABLE2構造体と、この構造体のMIB_IF_ROW2エントリに mmory を割り当てます。 これらの返された構造体が不要になったら、FreeMibTableを呼び出して、ドライバーメモリを解放する必要があります。

NDIS 中間ドライバー インターフェイスと NDIS フィルター ドライバー インターフェイスを含むすべてのインターフェイスは、Level パラメーターの使用可能な値のいずれかに対して返されます。 Level パラメーターの設定は、インターフェイスの Table パラメーターが指すMIB_IF_TABLE2構造体のMIB_IF_ROW2構造体の統計および状態メンバーが返される方法に影響します。 たとえば、ネットワーク インターフェイス カード (NIC) には NDIS ミニポート ドライバーがあります。 NDIS 中間ドライバーは、上位レベルのプロトコル ドライバーと NDIS ミニポート ドライバーの間のインターフェイスにインストールできます。 NDIS フィルター ドライバー は、NDIS 中間ドライバーの上に接続できます。 NIC は、MIB_IF_ROW2構造体の MediaConnectState メンバー MediaConnectStateConnectedとして報告しますが、NDIS フィルター ドライバーは状態を変更し、状態 MediaConnectStateDisconnectedとして報告するとします。 インターフェイス情報が Level パラメーターを MibIfTableNormalに設定して照会されると、フィルター スタックの上部にある状態 (MediaConnectStateDisconnected) が報告されます。 インターフェイスが Level パラメーターを MibIfTableRawに設定してクエリを実行すると、インターフェイス レベルの状態 (MediaConnectStateConnected) が直接返されます。

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

必要条件

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

ユニバーサル

バージョン

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

ヘッダ

Netioapi.h (Netioapi.h を含む)

図書館

Netio.lib

IRQL

< DISPATCH_LEVEL

関連項目

FreeMibTableする

GetIfTable2する

MIB_IF_TABLE_LEVEL

MIB_IF_TABLE2

MIB_IF_ROW2