GetIfTable2Ex 関数
GetIfTable2Ex 関数は、取得するインターフェイス情報のレベルを指定して、MIB-II インターフェイス テーブルを取得します。
構文
NETIOAPI_API GetIfTable2Ex(
_In_ MIB_IF_TABLE_LEVEL Level,
_Out_ PMIB_IF_TABLE2 *Table
);
パラメーター
Level [in]
取得するインターフェイス情報のレベルを決定します。 このパラメーターには、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 エントリにメモリを割り当てます。 これらの返された構造体が不要になった場合、ドライバーは FreeMibTable を呼び出してメモリを解放する必要があります。
NDIS 中間ドライバー インターフェイスと NDIS フィルター ドライバー インターフェイスを含むすべてのインターフェイスは、Level パラメーターの使用可能な値のいずれかに対して返されます。 Level パラメーターの設定は、インターフェイスの Table パラメーターが指す MIB_IF_TABLE2 構造体の MIB_IF_ROW2 構造体の統計および状態メンバーが返される方法に影響します。 たとえば、ネットワーク インターフェイス カード (NIC) には NDIS ミニポート ドライバーがあります。 NDIS 中間ドライバーは、上位レベルのプロトコル ドライバーと NDIS ミニポート ドライバーの間のインターフェイスにインストールできます。 NDIS filter driver ドライバーは、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 |