GetPerTcpConnectionEStats 関数 (iphlpapi.h)

GetPerTcpConnectionEStats 関数は、IPv4 TCP 接続の拡張統計を取得します。

構文

IPHLPAPI_DLL_LINKAGE ULONG GetPerTcpConnectionEStats(
        PMIB_TCPROW     Row,
        TCP_ESTATS_TYPE EstatsType,
  [out] PUCHAR          Rw,
        ULONG           RwVersion,
        ULONG           RwSize,
  [out] PUCHAR          Ros,
        ULONG           RosVersion,
        ULONG           RosSize,
  [out] PUCHAR          Rod,
        ULONG           RodVersion,
        ULONG           RodSize
);

パラメーター

Row

IPv4 TCP 接続の MIB_TCPROW 構造体へのポインター。

EstatsType

要求された TCP の拡張統計の種類。 このパラメーターは、呼び出しが成功した場合に RwRodRos パラメーターで返される情報のデータと形式を決定します。

このパラメーターには、Tcpestats.h ヘッダー ファイルで定義されているTCP_ESTATS_TYPE列挙型の値のいずれかを指定できます。

説明
TcpConnectionEstatsSynOpts
この値は、TCP 接続の SYN 交換情報を要求します。

この列挙値では、読み取り専用の静的情報のみを使用できます。

Ros パラメーターが NULL ではなく、関数が成功した場合、Ros パラメーターが指すバッファーには、TCP_ESTATS_SYN_OPTS_ROS_v0構造体が含まれている必要があります。

TcpConnectionEstatsData
この値は、TCP 接続の拡張データ転送情報を要求します。

この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。

Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_DATA_RW_v0構造体が含まれている必要があります。

この TCP 接続に対して拡張データ転送情報が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターが指すバッファーに TCP_ESTATS_DATA_ROD_v0 構造体が含まれている必要があります。

TcpConnectionEstatsSndCong
この値は、TCP 接続の送信者の輻輳を要求します。

この列挙値には、3 種類の情報 (読み取り専用の静的情報、読み取り専用動的情報、読み取り/書き込み情報) がすべて使用できます。

Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_SND_CONG_RW_v0構造体が含まれている必要があります。

Ros パラメーターが NULL ではなく、関数が成功した場合、Ros パラメーターが指すバッファーには、TCP_ESTATS_SND_CONG_ROS_v0構造体が含まれている必要があります。

この TCP 接続に対して送信者の輻輳情報が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターが指すバッファーには TCP_ESTATS_SND_CONG_ROD_v0 構造体が含まれている必要があります。

TcpConnectionEstatsPath
この値は、TCP 接続の拡張パス測定情報を要求します。

この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。

Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_PATH_RW_v0構造体が含まれている必要があります。

この TCP 接続に対して拡張パス測定情報が有効で 、Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターが指すバッファーには TCP_ESTATS_PATH_ROD_v0 構造体が含まれている必要があります。

TcpConnectionEstatsSendBuff
この値は、TCP 接続の拡張出力キュー情報を要求します。

この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。

Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_SEND_BUFF_RW_v0構造体が含まれている必要があります。

この TCP 接続に対して拡張出力キュー情報が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターが指すバッファーには 、TCP_ESTATS_SEND_BUFF_ROD_v0 構造体が含まれている必要があります。

TcpConnectionEstatsRec
この値は、TCP 接続の拡張ローカル レシーバー情報を要求します。

この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。

Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_REC_RW_v0構造体が含まれている必要があります。

この TCP 接続に対して拡張ローカル レシーバー情報が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターが指すバッファーには 、TCP_ESTATS_REC_ROD_v0 構造体が含まれている必要があります。

TcpConnectionEstatsObsRec
この値は、TCP 接続の拡張リモート レシーバー情報を要求します。

この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。

Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_OBS_REC_RW_v0構造体が含まれている必要があります。

この TCP 接続に対して拡張リモート レシーバー情報が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターによって指されるバッファーには 、TCP_ESTATS_OBS_REC_ROD_v0 構造体が含まれている必要があります。

TcpConnectionEstatsBandwidth
この値は、帯域幅に対する TCP 接続の帯域幅推定統計を要求します。

この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。

Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターによって指されるバッファーには、TCP_ESTATS_BANDWIDTH_RW_v0構造体が含まれている必要があります。

この TCP 接続に対して帯域幅推定統計が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターによって指されるバッファーには 、TCP_ESTATS_BANDWIDTH_ROD_v0 構造体が含まれている必要があります。

TcpConnectionEstatsFineRtt
この値は、TCP 接続の詳細なラウンド トリップ時間 (RTT) 推定統計を要求します。

この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。

Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターによって指されるバッファーには、TCP_ESTATS_FINE_RTT_RW_v0構造体が含まれている必要があります。

この TCP 接続に対して詳細な RTT 推定統計が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターによって指されるバッファーには 、TCP_ESTATS_FINE_RTT_ROD_v0 構造体が含まれている必要があります。

[out] Rw

読み取り/書き込み情報を受け取るバッファーへのポインター。 アプリケーションが TCP 接続の読み取り/書き込み情報を取得したくない場合、このパラメーターは NULL ポインターである可能性があります。

RwVersion

要求された読み取り/書き込み情報のバージョン。 現在サポートされている値は 0 のバージョンです。

RwSize

Rw パラメーターが指すバッファーのサイズ (バイト単位)。

[out] Ros

読み取り専用の静的情報を受け取るバッファーへのポインター。 アプリケーションが TCP 接続の読み取り専用の静的情報を取得しない場合、このパラメーターは NULL ポインターである可能性があります。

RosVersion

要求された読み取り専用の静的情報のバージョン。 現在サポートされている値は 0 のバージョンです。

RosSize

Ros パラメーターが指すバッファーのサイズ (バイト単位)。

[out] Rod

読み取り専用の動的情報を受け取るバッファーへのポインター。 アプリケーションが TCP 接続の読み取り専用の動的情報を取得しない場合、このパラメーターは NULL ポインターである可能性があります。

RodVersion

要求された読み取り専用の動的情報のバージョン。 現在サポートされている値は 0 のバージョンです。

RodSize

Rod パラメーターが指すバッファーのサイズ (バイト単位)。

戻り値

関数が成功した場合、戻り値はNO_ERROR。

関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。

リターン コード 説明
ERROR_INSUFFICIENT_BUFFER
関数に渡されるバッファーが小さすぎます。 このエラーは、 RwRos、または Rod パラメーターが指すバッファーがデータを受信するのに十分な大きさでない場合に返されます。 このエラーは、Rw、Ros、または Rod パラメーターが指す指定されたバッファーのいずれかが NULL であるのに、関連する RwSizeRosSize、または RodSize で長さが指定されている場合にも返されます。

このエラー値は、Windows Vista および Windows Server 2008 で返されます。

ERROR_INVALID_PARAMETER
パラメーターが正しくありません。 Row パラメーターが NULL ポインターの場合、このエラーが返されます。
ERROR_INVALID_USER_BUFFER
指定されたユーザー バッファーは、要求された操作に対して無効です。 このエラーは、 RwRos、または Rod パラメーターが指す指定されたバッファーのいずれかが NULL であるのに、関連付けられている RwSizeRosSize、または RodSize で長さが指定されている場合に返されます。 その結果、次のいずれかの条件が満たされた場合、このエラーが返されます。
  • Row パラメーターは NULL ポインターで、RwSize パラメーターは 0 以外です。
  • Ros パラメーターは NULL ポインターで、RosSize パラメーターは 0 以外です。
  • Rod パラメーターは NULL ポインターで、RodSize パラメーターは 0 以外です。

このエラー値は、Windows 7 および Windows Server 2008 R2 で返されます。

ERROR_NOT_FOUND
この要求されたエントリが見つかりませんでした。 Row パラメーターで指定された TCP 接続が見つからなかった場合、このエラーが返されます。
ERROR_NOT_SUPPORTED
要求はサポートされていません。 このエラーは、RwVersion、RosVersion、または RodVersion パラメーターが 0 に設定されていない場合に返されます。
その他
FormatMessage を使用して、返されたエラーのメッセージ文字列を取得します。

解説

GetPerTcpConnectionEStats 関数は、Windows Vista 以降で定義されています。

GetPerTcpConnectionEStats 関数は、TCP を使用して、ネットワークとアプリケーションの両方でパフォーマンスの問題を診断するように設計されています。 ネットワーク ベースのアプリケーションのパフォーマンスが低下している場合、TCP はボトルネックが送信側、受信側、またはネットワーク自体にあるかどうかを判断できます。 ボトルネックがネットワーク内にある場合、TCP はその性質に関する特定の情報を提供できます。

GetPerTcpConnectionEStats 関数は、Row パラメーターで渡された IPv4 TCP 接続の拡張統計を取得します。 取得される拡張統計の型は、 EstatsType パラメーターで指定されます。 この TCP 接続の拡張統計は、以前に SetPerTcpConnectionEStats 関数の呼び出しによって、TcpConnectionEstatsSynOptsEstatsType パラメーターで渡される場合を除くすべてのTCP_ESTATS_TYPE値に対して有効にしておく必要があります。

GetTcpTable 関数は、ローカル コンピューター上の IPv4 TCP 接続テーブルを取得するために使用されます。 この関数は、エントリの配列を含む MIB_TCPTABLE 構造体 MIB_TCPROW 返します。 GetPerTcpConnectionEStats 関数に渡される Row パラメーターは、既存の IPv4 TCP 接続のエントリである必要があります。

現在サポートされている TCP 接続統計の唯一のバージョンは、バージョン 0 です。 そのため、GetPerTcpConnectionEStats に渡される RwVersionRosVersionRodVersion の各パラメーターを 0 に設定する必要があります。

IPv6 接続の拡張 TCP 統計については、 GetPerTcp6ConnectionEStats 関数と SetPerTcp6ConnectionEStats 関数を参照してください。

SetPerTcpConnectionEStats 関数は、Administrators グループのメンバーとしてログオンしているユーザーのみが呼び出すことができます。 Administrators グループのメンバーではないユーザーが SetPerTcpConnectionEStats を呼び出すと、関数呼び出しは失敗し、 ERROR_ACCESS_DENIED が返されます。 この関数は、Windows Vista 以降のユーザー アカウント制御 (UAC) が原因で失敗する場合もあります。 この関数を含むアプリケーションが、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーによって実行された場合、 requestedExecutionLevel が requireAdministrator に設定されたマニフェスト ファイルでアプリケーションがマークされていない限り、この呼び出しは失敗します。 アプリケーションにこのマニフェスト ファイルがない場合、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーは、この関数を成功させるために、組み込みの Administrator (RunAs 管理者) として拡張シェルでアプリケーションを実行する必要があります。

GetPerTcpConnectionEStats の呼び出し元は、返された Rw 構造体の EnableCollection フィールドをチェックする必要があります。そうでないTRUE場合、呼び出し元は Ros 構造体と Rod 構造体のデータを無視する必要があります。 EnableCollection が にFALSE設定されている場合、RosRod で返されるデータは未定義です。 たとえば、これが発生する可能性がある 1 つの条件は、 GetPerTcpConnectionEStats を使用して IPv4 TCP 接続の拡張統計を取得し、以前に SetPerTcpConnectionEStats を呼び出して拡張統計を有効にした場合です。 SetPerTcpConnectionEStats 呼び出しが失敗した場合、GetPerTcpConnectionEStats への後続の呼び出しは、拡張 TCP 統計ではなく、無意味なランダム データを返します。 次の例を管理者として実行し、通常のユーザーとして実行すると、その例を確認できます。

コード例については、GetPerTcp6ConnectionEStats 関数トピックの「例」セクションを参照してください。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー iphlpapi.h
Library Iphlpapi.lib
[DLL] Iphlpapi.dll

関連項目

GetPerTcp6ConnectionEStats

GetTcpTable

MIB_TCPROW

MIB_TCPTABLE

SetPerTcp6ConnectionEStats

SetPerTcpConnectionEStats

TCP_ESTATS_BANDWIDTH_ROD_v0

TCP_ESTATS_BANDWIDTH_RW_v0

TCP_ESTATS_DATA_ROD_v0

TCP_ESTATS_DATA_RW_v0

TCP_ESTATS_FINE_RTT_ROD_v0

TCP_ESTATS_FINE_RTT_RW_v0

TCP_ESTATS_OBS_REC_ROD_v0

TCP_ESTATS_OBS_REC_RW_v0

TCP_ESTATS_PATH_ROD_v0

TCP_ESTATS_PATH_RW_v0

TCP_ESTATS_REC_ROD_v0

TCP_ESTATS_REC_RW_v0

TCP_ESTATS_SEND_BUFF_ROD_v0

TCP_ESTATS_SEND_BUFF_RW_v0

TCP_ESTATS_SND_CONG_ROD_v0

TCP_ESTATS_SND_CONG_ROS_v0

TCP_ESTATS_SND_CONG_RW_v0

TCP_ESTATS_SYN_OPTS_ROS_v0

TCP_ESTATS_TYPE

TCP_SOFT_ERROR