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 の拡張統計の種類。 このパラメーターは、呼び出しが成功した場合に Rw、 Rod、 Ros パラメーターで返される情報のデータと形式を決定します。
このパラメーターには、Tcpestats.h ヘッダー ファイルで定義されているTCP_ESTATS_TYPE列挙型の値のいずれかを指定できます。
値 | 説明 |
---|---|
|
この値は、TCP 接続の SYN 交換情報を要求します。
この列挙値では、読み取り専用の静的情報のみを使用できます。 Ros パラメーターが NULL ではなく、関数が成功した場合、Ros パラメーターが指すバッファーには、TCP_ESTATS_SYN_OPTS_ROS_v0構造体が含まれている必要があります。 |
|
この値は、TCP 接続の拡張データ転送情報を要求します。
この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。 Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_DATA_RW_v0構造体が含まれている必要があります。 この TCP 接続に対して拡張データ転送情報が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターが指すバッファーに TCP_ESTATS_DATA_ROD_v0 構造体が含まれている必要があります。 |
|
この値は、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 構造体が含まれている必要があります。 |
|
この値は、TCP 接続の拡張パス測定情報を要求します。
この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。 Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_PATH_RW_v0構造体が含まれている必要があります。 この TCP 接続に対して拡張パス測定情報が有効で 、Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターが指すバッファーには TCP_ESTATS_PATH_ROD_v0 構造体が含まれている必要があります。 |
|
この値は、TCP 接続の拡張出力キュー情報を要求します。
この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。 Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_SEND_BUFF_RW_v0構造体が含まれている必要があります。 この TCP 接続に対して拡張出力キュー情報が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターが指すバッファーには 、TCP_ESTATS_SEND_BUFF_ROD_v0 構造体が含まれている必要があります。 |
|
この値は、TCP 接続の拡張ローカル レシーバー情報を要求します。
この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。 Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_REC_RW_v0構造体が含まれている必要があります。 この TCP 接続に対して拡張ローカル レシーバー情報が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターが指すバッファーには 、TCP_ESTATS_REC_ROD_v0 構造体が含まれている必要があります。 |
|
この値は、TCP 接続の拡張リモート レシーバー情報を要求します。
この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。 Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターが指すバッファーには、TCP_ESTATS_OBS_REC_RW_v0構造体が含まれている必要があります。 この TCP 接続に対して拡張リモート レシーバー情報が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターによって指されるバッファーには 、TCP_ESTATS_OBS_REC_ROD_v0 構造体が含まれている必要があります。 |
|
この値は、帯域幅に対する TCP 接続の帯域幅推定統計を要求します。
この列挙値では、読み取り専用の動的情報と読み取り/書き込み情報のみを使用できます。 Rw パラメーターが NULL ではなく、関数が成功した場合、Rw パラメーターによって指されるバッファーには、TCP_ESTATS_BANDWIDTH_RW_v0構造体が含まれている必要があります。 この TCP 接続に対して帯域幅推定統計が有効になっており、 Rod パラメーターが NULL ではなく、関数が成功した場合、 Rod パラメーターによって指されるバッファーには 、TCP_ESTATS_BANDWIDTH_ROD_v0 構造体が含まれている必要があります。 |
|
この値は、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。
関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。
リターン コード | 説明 |
---|---|
|
関数に渡されるバッファーが小さすぎます。 このエラーは、 Rw、 Ros、または Rod パラメーターが指すバッファーがデータを受信するのに十分な大きさでない場合に返されます。 このエラーは、Rw、Ros、または Rod パラメーターが指す指定されたバッファーのいずれかが NULL であるのに、関連する RwSize、RosSize、または RodSize で長さが指定されている場合にも返されます。
このエラー値は、Windows Vista および Windows Server 2008 で返されます。 |
|
パラメーターが正しくありません。 Row パラメーターが NULL ポインターの場合、このエラーが返されます。 |
|
指定されたユーザー バッファーは、要求された操作に対して無効です。 このエラーは、 Rw、 Ros、または Rod パラメーターが指す指定されたバッファーのいずれかが NULL であるのに、関連付けられている RwSize、 RosSize、または RodSize で長さが指定されている場合に返されます。 その結果、次のいずれかの条件が満たされた場合、このエラーが返されます。
このエラー値は、Windows 7 および Windows Server 2008 R2 で返されます。 |
|
この要求されたエントリが見つかりませんでした。 Row パラメーターで指定された TCP 接続が見つからなかった場合、このエラーが返されます。 |
|
要求はサポートされていません。 このエラーは、RwVersion、RosVersion、または RodVersion パラメーターが 0 に設定されていない場合に返されます。 |
|
FormatMessage を使用して、返されたエラーのメッセージ文字列を取得します。 |
解説
GetPerTcpConnectionEStats 関数は、Windows Vista 以降で定義されています。
GetPerTcpConnectionEStats 関数は、TCP を使用して、ネットワークとアプリケーションの両方でパフォーマンスの問題を診断するように設計されています。 ネットワーク ベースのアプリケーションのパフォーマンスが低下している場合、TCP はボトルネックが送信側、受信側、またはネットワーク自体にあるかどうかを判断できます。 ボトルネックがネットワーク内にある場合、TCP はその性質に関する特定の情報を提供できます。
GetPerTcpConnectionEStats 関数は、Row パラメーターで渡された IPv4 TCP 接続の拡張統計を取得します。 取得される拡張統計の型は、 EstatsType パラメーターで指定されます。 この TCP 接続の拡張統計は、以前に SetPerTcpConnectionEStats 関数の呼び出しによって、TcpConnectionEstatsSynOpts が EstatsType パラメーターで渡される場合を除くすべてのTCP_ESTATS_TYPE値に対して有効にしておく必要があります。
GetTcpTable 関数は、ローカル コンピューター上の IPv4 TCP 接続テーブルを取得するために使用されます。 この関数は、エントリの配列を含む MIB_TCPTABLE 構造体 MIB_TCPROW 返します。 GetPerTcpConnectionEStats 関数に渡される Row パラメーターは、既存の IPv4 TCP 接続のエントリである必要があります。
現在サポートされている TCP 接続統計の唯一のバージョンは、バージョン 0 です。 そのため、GetPerTcpConnectionEStats に渡される RwVersion、RosVersion、RodVersion の各パラメーターを 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
設定されている場合、Ros と Rod で返されるデータは未定義です。 たとえば、これが発生する可能性がある 1 つの条件は、 GetPerTcpConnectionEStats を使用して IPv4 TCP 接続の拡張統計を取得し、以前に SetPerTcpConnectionEStats を呼び出して拡張統計を有効にした場合です。 SetPerTcpConnectionEStats 呼び出しが失敗した場合、GetPerTcpConnectionEStats への後続の呼び出しは、拡張 TCP 統計ではなく、無意味なランダム データを返します。 次の例を管理者として実行し、通常のユーザーとして実行すると、その例を確認できます。
例
コード例については、GetPerTcp6ConnectionEStats 関数トピックの「例」セクションを参照してください。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | iphlpapi.h |
Library | Iphlpapi.lib |
[DLL] | Iphlpapi.dll |