GetIfStackTable 関数
GetIfStackTable 関数は、インターフェイス スタック上のネットワーク インターフェイスのリレーションシップを指定するネットワーク インターフェイス スタック行エントリのテーブルを取得します。
構文
NETIOAPI_API GetIfStackTable(
_Out_ PMIB_IFSTACK_TABLE *Table
);
パラメーター
- テーブル [out]
MIB_IFSTACK_TABLE 構造体のインターフェイス スタック行エントリのテーブルを受け取るバッファーへのポインター。
戻り値
関数が成功した場合、GetIfStackTable は STATUS_SUCCESS を返します。
関数が失敗した場合、GetIfStackTable は次のいずれかのエラー コードを返します:
リターン コード | 説明 |
---|---|
STATUS_INVALID_PARAMETER | その関数に渡された無効なパラメーター。 このエラーは、Table パラメーターに NULL ポインターが渡された場合に返されます。 |
STATUS_NOT_ENOUGH_MEMORY | 操作を完了するために使用できるメモリ リソースが不足しています。 |
STATUS_NOT_FOUND | インターフェイス スタック エントリが見つかりませんでした。 |
その他 | FormatMessage 関数を使用して、返されたエラーのメッセージ文字列を取得します。 |
解説
GetIfStackTable 関数は、ローカル コンピューター上のインターフェイス スタック上の物理ネットワーク インターフェイスと論理ネットワーク インターフェイスを列挙し、この情報を MIB_IFSTACK_TABLE 構造体で返します。
インターフェイス スタック エントリは、Table パラメーターが指すバッファー内の MIB_IFSTACK_TABLE 構造体で返されます。 MIB_IFSTACK_TABLE 構造体には、インターフェイス スタック エントリ数と、各インターフェイス スタック エントリの MIB_IFSTACK_ROW 構造体の配列が含まれています。
インターフェイス スタック内のインターフェイス間の関係は、MIB_IFSTACK_ROW 構造体の HigherLayerInterfaceIndex メンバーのインデックスを持つインターフェイスが、MIB_IFSTACK_ROW 構造体の LowerLayerInterfaceIndex メンバーのインデックスを持つインターフェイスのすぐ上にあるということです。
メモリは、MIB_IFSTACK_TABLE 構造体とこの構造体の MIB_IFSTACK_ROW エントリに対して GetIfStackTable 関数によって割り当てられます。 これらの返された構造体が不要になった場合、ドライバーは FreeMibTable を呼び出してメモリを解放する必要があります。
Table パラメーターが指す返された MIB_IFSTACK_TABLE 構造体には、NumEntries メンバーと MIB_IFSTACK_TABLE 構造体の Table メンバーの最初の MIB_IFSTACK_ROW 配列エントリとの間に、整列のためのパディングが含まれている可能性があることに注意してください。 整列のためのパディングは、MIB_IFSTACK_ROW 配列エントリ間にも存在する場合があります。 MIB_IFSTACK_ROW 配列エントリへのアクセスは、パディングが存在する可能性があることを前提とする必要があります。
要件
対象プラットフォーム |
ユニバーサル |
バージョン |
Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
ヘッダー |
Netioapi.h (Netioapi.h を含む) |
ライブラリ |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |