GetTcpStatistics 関数 (iphlpapi.h)

GetTcpStatistics 関数は、ローカル コンピューターの TCP 統計情報を取得します。

構文

IPHLPAPI_DLL_LINKAGE ULONG GetTcpStatistics(
  [out] PMIB_TCPSTATS Statistics
);

パラメーター

[out] Statistics

ローカル コンピューターの TCP 統計を受け取る MIB_TCPSTATS 構造体へのポインター。

戻り値

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

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

リターン コード 説明
ERROR_INVALID_PARAMETER
pStats パラメーターが NULL であるか、GetTcpStatisticspStats パラメーターによって指すメモリに書き込むことができません。
その他
FormatMessage 関数を使用して、返されたエラーのメッセージ文字列を取得します。

解説

GetTcpStatistics 関数は、現在のコンピューター上の IPv4 の TCP 統計情報を返します。 Windows XP 以降では、 GetTcpStatisticsEx を使用して、IPv4 または IPv6 の TCP 統計情報を取得できます。

次の例では、ローカル コンピューターの TCP 統計を取得し、返されたデータからいくつかの値を出力します。

//#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <stdio.h>

#pragma comment(lib, "iphlpapi.lib")

#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x)) 
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))

/* Note: could also use malloc() and free() */

int main()
{
    PMIB_TCPSTATS pTCPStats;
    DWORD dwRetVal = 0;

    pTCPStats = (MIB_TCPSTATS*) MALLOC (sizeof(MIB_TCPSTATS));
    if (pTCPStats == NULL) {
        printf("Error allocating memory\n");
        return 1;
    }

    if ((dwRetVal = GetTcpStatistics(pTCPStats)) == NO_ERROR) {
      printf("\tActive Opens: %ld\n", pTCPStats->dwActiveOpens);
      printf("\tPassive Opens: %ld\n", pTCPStats->dwPassiveOpens);
      printf("\tSegments Recv: %ld\n", pTCPStats->dwInSegs);
      printf("\tSegments Xmit: %ld\n", pTCPStats->dwOutSegs);
      printf("\tTotal # Conxs: %ld\n", pTCPStats->dwNumConns);
    }
    else {
      printf("GetTcpStatistics failed with error: %ld\n", dwRetVal);
      
      LPVOID lpMsgBuf;
      if (FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM | 
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dwRetVal,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
        (LPTSTR) &lpMsgBuf,
        0,
        NULL )) {
        printf("\tError: %s", lpMsgBuf);
      }
      LocalFree( lpMsgBuf );
    }

    if (pTCPStats)
        FREE (pTCPStats);
}

要件

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

関連項目

GetIcmpStatistics

GetIpStatistics

GetTcpStatisticsEx

GetUdpStatistics

IP ヘルパー関数リファレンス

IP ヘルパーの開始ページ

MIB_TCPSTATS