次の方法で共有


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 メンバーのインデックスを持つインターフェイスのすぐ上にあるということです。

メモリは、GetIfStackTable 関数によって、MIB_IFSTACK_TABLE構造体およびこの構造体のMIB_IFSTACK_ROW エントリに割り当てられます。 これらの返された構造体が不要になったら、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

関連項目

FreeMibTableする

GetIfEntry2する

GetIfTable2する

GetInvertedIfStackTable

GetIpInterfaceEntry

InitializeIpInterfaceEntry

MIB_IF_ROW2

MIB_IF_TABLE2

MIB_IFSTACK_ROW

MIB_IFSTACK_TABLE

MIB_INVERTEDIFSTACK_ROW

MIB_INVERTEDIFSTACK_TABLE

MIB_IPINTERFACE_ROW

NotifyIpInterfaceChange

SetIpInterfaceEntry