Bagikan melalui


Fungsi GetPerTcpConnectionEStats (iphlpapi.h)

Fungsi GetPerTcpConnectionEStats mengambil statistik yang diperluas untuk koneksi TCP IPv4.

Sintaks

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
);

Parameter

Row

Penunjuk ke struktur MIB_TCPROW untuk koneksi TCP IPv4.

EstatsType

Jenis statistik yang diperluas untuk TCP yang diminta. Parameter ini menentukan data dan format informasi yang dikembalikan dalam parameter Rw, Rod, dan Ros jika panggilan berhasil.

Parameter ini dapat menjadi salah satu nilai dari jenis enumerasi TCP_ESTATS_TYPE yang ditentukan dalam file header Tcpestats.h .

Nilai Makna
TcpConnectionEstatsSynOpts
Nilai ini meminta informasi pertukaran SYN untuk koneksi TCP.

Hanya informasi statis baca-saja yang tersedia untuk nilai enumerasi ini.

Jika parameter Ros bukan NULL dan fungsi berhasil, buffer yang diacu oleh parameter Ros harus berisi struktur TCP_ESTATS_SYN_OPTS_ROS_v0 .

TcpConnectionEstatsData
Nilai ini meminta informasi transfer data yang diperluas untuk koneksi TCP.

Hanya informasi dinamis baca-saja dan informasi baca/tulis yang tersedia untuk nilai enumerasi ini.

Jika parameter Rw bukan NULL dan fungsi berhasil, buffer yang diarahkan oleh parameter Rw harus berisi struktur TCP_ESTATS_DATA_RW_v0 .

Jika informasi transfer data yang diperluas diaktifkan untuk koneksi TCP ini, parameter Rod bukan NULL, dan fungsi berhasil, buffer yang ditunjukkan oleh parameter Rod harus berisi struktur TCP_ESTATS_DATA_ROD_v0 .

TcpConnectionEstatsSndCong
Nilai ini meminta kemacetan pengirim untuk koneksi TCP.

Ketiga jenis informasi (informasi statis baca-saja, dinamis baca-saja, dan baca/tulis) tersedia untuk nilai enumerasi ini.

Jika parameter Rw bukan NULL dan fungsi berhasil, buffer yang diarahkan oleh parameter Rw harus berisi struktur TCP_ESTATS_SND_CONG_RW_v0 .

Jika parameter Ros bukan NULL dan fungsi berhasil, buffer yang diacu oleh parameter Ros harus berisi struktur TCP_ESTATS_SND_CONG_ROS_v0 .

Jika informasi kemacetan pengirim diaktifkan untuk koneksi TCP ini, parameter Rod bukan NULL, dan fungsi berhasil, buffer yang ditunjukkan oleh parameter Batang harus berisi struktur TCP_ESTATS_SND_CONG_ROD_v0 .

TcpConnectionEstatsPath
Nilai ini meminta informasi pengukuran jalur yang diperluas untuk koneksi TCP.

Hanya informasi dinamis baca-saja dan informasi baca/tulis yang tersedia untuk nilai enumerasi ini.

Jika parameter Rw bukan NULL dan fungsi berhasil, buffer yang diarahkan oleh parameter Rw harus berisi struktur TCP_ESTATS_PATH_RW_v0 .

Jika informasi pengukuran jalur yang diperluas diaktifkan untuk koneksi TCP ini, parameter Rod bukan NULL, dan fungsi berhasil, buffer yang ditunjukkan oleh parameter Batang harus berisi struktur TCP_ESTATS_PATH_ROD_v0 .

TcpConnectionEstatsSendBuff
Nilai ini meminta informasi antrean output yang diperluas untuk koneksi TCP.

Hanya informasi dinamis baca-saja dan informasi baca/tulis yang tersedia untuk nilai enumerasi ini.

Jika parameter Rw bukan NULL dan fungsi berhasil, buffer yang diarahkan oleh parameter Rw harus berisi struktur TCP_ESTATS_SEND_BUFF_RW_v0 .

Jika informasi antrean output yang diperluas diaktifkan untuk koneksi TCP ini, parameter Rod bukan NULL, dan fungsi berhasil, buffer yang ditunjukkan oleh parameter Rod harus berisi struktur TCP_ESTATS_SEND_BUFF_ROD_v0 .

TcpConnectionEstatsRec
Nilai ini meminta informasi penerima lokal yang diperluas untuk koneksi TCP.

Hanya informasi dinamis baca-saja dan informasi baca/tulis yang tersedia untuk nilai enumerasi ini.

Jika parameter Rw bukan NULL dan fungsi berhasil, buffer yang diarahkan oleh parameter Rw harus berisi struktur TCP_ESTATS_REC_RW_v0 .

Jika informasi penerima lokal yang diperluas diaktifkan untuk koneksi TCP ini, parameter Rod bukan NULL, dan fungsi berhasil, buffer yang ditunjukkan oleh parameter Batang harus berisi struktur TCP_ESTATS_REC_ROD_v0 .

TcpConnectionEstatsObsRec
Nilai ini meminta informasi penerima jarak jauh yang diperluas untuk koneksi TCP.

Hanya informasi dinamis baca-saja dan informasi baca/tulis yang tersedia untuk nilai enumerasi ini.

Jika parameter Rw bukan NULL dan fungsi berhasil, buffer yang diarahkan oleh parameter Rw harus berisi struktur TCP_ESTATS_OBS_REC_RW_v0 .

Jika informasi penerima jarak jauh yang diperluas diaktifkan untuk koneksi TCP ini, parameter Rod bukan NULL, dan fungsi berhasil, buffer yang ditunjukkan oleh parameter Rod harus berisi struktur TCP_ESTATS_OBS_REC_ROD_v0 .

TcpConnectionEstatsBandwidth
Nilai ini meminta statistik estimasi bandwidth untuk koneksi TCP pada bandwidth.

Hanya informasi dinamis baca-saja dan informasi baca/tulis yang tersedia untuk nilai enumerasi ini.

Jika parameter Rw bukan NULL dan fungsi berhasil, buffer yang diarahkan oleh parameter Rw harus berisi struktur TCP_ESTATS_BANDWIDTH_RW_v0 .

Jika statistik estimasi bandwidth diaktifkan untuk koneksi TCP ini, parameter Rod bukan NULL, dan fungsi berhasil, buffer yang ditunjukkan oleh parameter Rod harus berisi struktur TCP_ESTATS_BANDWIDTH_ROD_v0 .

TcpConnectionEstatsFineRtt
Nilai ini meminta statistik estimasi waktu pulang pergi (RTT) yang terperinci untuk koneksi TCP.

Hanya informasi dinamis baca-saja dan informasi baca/tulis yang tersedia untuk nilai enumerasi ini.

Jika parameter Rw bukan NULL dan fungsi berhasil, buffer yang diarahkan oleh parameter Rw harus berisi struktur TCP_ESTATS_FINE_RTT_RW_v0 .

Jika statistik estimasi RTT terperinci diaktifkan untuk koneksi TCP ini, parameter Rod bukan NULL, dan fungsi berhasil, buffer yang ditunjukkan oleh parameter Batang harus berisi struktur TCP_ESTATS_FINE_RTT_ROD_v0 .

[out] Rw

Penunjuk ke buffer untuk menerima informasi baca/tulis. Parameter ini mungkin penunjuk NULL jika aplikasi tidak ingin mengambil informasi baca/tulis untuk koneksi TCP.

RwVersion

Versi informasi baca/tulis yang diminta. Nilai yang didukung saat ini adalah versi nol.

RwSize

Ukuran, dalam byte, dari buffer yang diarahkan oleh parameter Rw .

[out] Ros

Penunjuk ke buffer untuk menerima informasi statis baca-saja. Parameter ini mungkin penunjuk NULL jika aplikasi tidak ingin mengambil informasi statis baca-saja untuk koneksi TCP.

RosVersion

Versi informasi statis baca-saja yang diminta. Nilai yang didukung saat ini adalah versi nol.

RosSize

Ukuran, dalam byte, dari buffer yang diacu oleh parameter Ros .

[out] Rod

Penunjuk ke buffer untuk menerima informasi dinamis baca-saja. Parameter ini mungkin penunjuk NULL jika aplikasi tidak ingin mengambil informasi dinamis baca-saja untuk koneksi TCP.

RodVersion

Versi informasi dinamis baca-saja yang diminta. Nilai yang didukung saat ini adalah versi nol.

RodSize

Ukuran, dalam byte, dari buffer yang diacu oleh parameter Rod .

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan NO_ERROR.

Jika fungsi gagal, nilai yang dikembalikan adalah salah satu kode kesalahan berikut.

Menampilkan kode Deskripsi
ERROR_INSUFFICIENT_BUFFER
Buffer yang diteruskan ke fungsi terlalu kecil. Kesalahan ini dikembalikan jika buffer yang diarahkan oleh parameter Rw, Ros, atau Rod tidak cukup besar untuk menerima data. Kesalahan ini juga mengembalikan jika salah satu buffer yang diberikan menunjuk ke parameter Rw, Ros, atau Rod adalah NULL, tetapi panjangnya ditentukan dalam RwSize, RosSize, atau RodSize terkait.

Nilai kesalahan ini dikembalikan pada Windows Vista dan Windows Server 2008.

ERROR_INVALID_PARAMETER
Parameter salah. Kesalahan ini dikembalikan jika parameter Baris adalah penunjuk NULL .
ERROR_INVALID_USER_BUFFER
Buffer pengguna yang disediakan tidak valid untuk operasi yang diminta. Kesalahan ini dikembalikan jika salah satu buffer yang diberikan menunjuk ke parameter Rw, Ros, atau Rod adalah NULL, tetapi panjangnya ditentukan dalam RwSize, RosSize, atau RodSize terkait. Akibatnya, kesalahan ini dikembalikan jika salah satu kondisi berikut terpenuhi:
  • Parameter Baris adalah penunjuk NULL dan parameter RwSize bukan nol.
  • Parameter Ros adalah penunjuk NULL dan parameter RosSize bukan nol.
  • Parameter Rod adalah penunjuk NULL dan parameter RodSize bukan nol.

Nilai kesalahan ini dikembalikan pada Windows 7 dan Windows Server 2008 R2.

ERROR_NOT_FOUND
Entri yang diminta ini tidak ditemukan. Kesalahan ini dikembalikan jika koneksi TCP yang ditentukan dalam parameter Baris tidak dapat ditemukan.
ERROR_NOT_SUPPORTED
Permintaan tidak didukung. Kesalahan ini dikembalikan jika parameter RwVersion, RosVersion, atau RodVersion tidak diatur ke nol.
Lainnya
Gunakan FormatMessage untuk mendapatkan string pesan untuk kesalahan yang dikembalikan.

Keterangan

Fungsi GetPerTcpConnectionEStats ditentukan pada Windows Vista dan yang lebih baru.

Fungsi GetPerTcpConnectionEStats dirancang untuk menggunakan TCP untuk mendiagnosis masalah performa di jaringan dan aplikasi. Jika aplikasi berbasis jaringan berkinerja buruk, TCP dapat menentukan apakah hambatan ada di pengirim, penerima, atau jaringan itu sendiri. Jika hambatan berada dalam jaringan, TCP dapat memberikan informasi spesifik tentang sifatnya.

Fungsi GetPerTcpConnectionEStats mengambil statistik yang diperluas untuk koneksi TCP IPv4 yang diteruskan dalam parameter Baris . Jenis statistik yang diperluas yang diambil ditentukan dalam parameter EstatsType . Statistik yang diperluas pada koneksi TCP ini sebelumnya harus diaktifkan oleh panggilan ke fungsi SetPerTcpConnectionEStats untuk semua nilai TCP_ESTATS_TYPE kecuali ketika TcpConnectionEstatsSynOpts diteruskan dalam parameter EstatsType .

Fungsi GetTcpTable digunakan untuk mengambil tabel koneksi TCP IPv4 di komputer lokal. Fungsi ini mengembalikan struktur MIB_TCPTABLE yang berisi array entri MIB_TCPROW . Parameter Baris yang diteruskan ke fungsi GetPerTcpConnectionEStats harus menjadi entri untuk koneksi TCP IPv4 yang ada.

Satu-satunya versi statistik koneksi TCP yang saat ini didukung adalah versi nol. Jadi parameter RwVersion, RosVersion, dan RodVersion yang diteruskan ke GetPerTcpConnectionEStats harus diatur ke 0.

Untuk informasi tentang statistik TCP yang diperluas pada koneksi IPv6, lihat fungsi GetPerTcp6ConnectionEStats dan SetPerTcp6ConnectionEStats .

Fungsi SetPerTcpConnectionEStats hanya dapat dipanggil oleh pengguna yang masuk sebagai anggota grup Administrator. Jika SetPerTcpConnectionEStats dipanggil oleh pengguna yang bukan anggota grup Administrator, panggilan fungsi akan gagal dan ERROR_ACCESS_DENIED dikembalikan. Fungsi ini juga dapat gagal karena kontrol akun pengguna (UAC) pada Windows Vista dan yang lebih baru. Jika aplikasi yang berisi fungsi ini dijalankan oleh pengguna yang masuk sebagai anggota grup Administrator selain Administrator bawaan, panggilan ini akan gagal kecuali aplikasi telah ditandai dalam file manifes dengan requestedExecutionLevel diatur ke requireAdministrator. Jika aplikasi tidak memiliki file manifes ini, pengguna yang masuk sebagai anggota grup Administrator selain Administrator bawaan kemudian harus menjalankan aplikasi dalam shell yang ditingkatkan sebagai Administrator bawaan (administrator RunAs) agar fungsi ini berhasil.

Pemanggil GetPerTcpConnectionEStats harus memeriksa bidang EnableCollection di struktur Rw yang dikembalikan, dan jika tidak TRUE, pemanggil harus mengabaikan data dalam struct Ros dan Rod . Jika EnableCollection diatur ke FALSE, maka data yang dikembalikan di Ros dan Rod tidak terdefinisi. Misalnya, satu kondisi di mana ini dapat terjadi adalah ketika Anda menggunakan GetPerTcpConnectionEStats untuk mengambil statistik yang diperluas untuk koneksi TCP IPv4, dan Anda sebelumnya telah memanggil SetPerTcpConnectionEStats untuk mengaktifkan statistik yang diperluas. Jika panggilan SetPerTcpConnectionEStats gagal, panggilan berikutnya ke GetPerTcpConnectionEStats akan mengembalikan data acak yang tidak berarti, dan bukan statistik TCP yang diperluas. Anda dapat mengamati contoh tersebut dengan menjalankan contoh di bawah ini sebagai administrator, dan sebagai pengguna normal.

Contoh

Untuk contoh kode, lihat bagian Contoh di topik fungsi GetPerTcp6ConnectionEStats .

Persyaratan

   
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header iphlpapi.h
Pustaka Iphlpapi.lib
DLL Iphlpapi.dll

Lihat juga

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