SIO_TCP_INITIAL_RTO kode kontrol
Deskripsi
Kode kontrol SIO_TCP_INITIAL_RTO mengonfigurasi parameter batas waktu transmisi ulang (RTO) awal pada soket.
Untuk melakukan operasi ini, panggil fungsi WSAIoctl atau WSPIoctl dengan parameter berikut.
int WSAIoctl(
(socket) s, // descriptor identifying a socket
SIO_TCP_INITIAL_RTO, // dwIoControlCode
(LPVOID) lpvInBuffer, // pointer to a TCP_INITIAL_RTO_PARAMETERS structure
(DWORD) cbInBuffer, // size, in bytes, of the input buffer
(LPVOID) lpvOutBuffer, // pointer to output buffer
(DWORD) cbOutBuffer, // size of output buffer
(LPDWORD) lpcbBytesReturned, // number of bytes returned
(LPWSAOVERLAPPED) lpOverlapped, // OVERLAPPED structure
(LPWSAOVERLAPPED_COMPLETION_ROUTINE) lpCompletionRoutine, // completion routine
);
int WSPIoctl(
(socket) s, // descriptor identifying a socket
SIO_TCP_INITIAL_RTO, // dwIoControlCode
(LPVOID) lpvInBuffer, // pointer to a TCP_INITIAL_RTO_PARAMETERS structure
(DWORD) cbInBuffer, // size, in bytes, of the input buffer
(LPVOID) lpvOutBuffer, // pointer to output buffer
(DWORD) cbOutBuffer, // size of output buffer
(LPDWORD) lpcbBytesReturned, // number of bytes returned
(LPWSAOVERLAPPED) lpOverlapped, // OVERLAPPED structure
(LPWSAOVERLAPPED_COMPLETION_ROUTINE) lpCompletionRoutine, // completion routine
(LPWSATHREADID) lpThreadId, // a WSATHREADID structure
(LPINT) lpErrno // a pointer to the error code.
);
Parameter
s
Deskriptor yang mengidentifikasi soket.
dwIoControlCode
Kode kontrol untuk operasi. Gunakan SIO_TCP_INITIAL_RTO untuk operasi ini.
lpvInBuffer
Penunjuk ke buffer input. Parameter ini berisi pointer ke TCP_INITIAL_RTO_PARAMETERS yang terkait dengan soket.
cbInBuffer
Ukuran, dalam byte, dari buffer input.
lpvOutBuffer
Penunjuk ke buffer output. Parameter ini tidak digunakan untuk operasi ini.
cbOutBuffer
Ukuran, dalam byte, dari buffer output. Parameter ini harus diatur ke nol.
lpcbBytesReturned
Penunjuk ke variabel yang menerima ukuran, dalam byte, dari data yang disimpan dalam buffer output.
Jika buffer output terlalu kecil, panggilan gagal, WSAGetLastError mengembalikan WSAEINVAL, dan parameter lpcbBytesReturned menunjuk ke nilai DWORD nol.
Jika lpOverlapped adalah NULL, nilai DWORD yang ditunjukkan oleh parameter lpcbBytesReturned yang dikembalikan pada panggilan yang berhasil tidak boleh nol.
Jika parameter lpOverlapped bukan NULL untuk soket yang tumpang tindih, operasi yang tidak dapat segera diselesaikan akan dimulai, dan penyelesaian akan ditunjukkan di lain waktu. Nilai DWORD yang ditunjukkan oleh parameter lpcbBytesReturned yang dikembalikan mungkin nol karena ukuran data yang disimpan tidak dapat ditentukan sampai operasi yang tumpang tindih selesai. Status penyelesaian akhir dapat diambil ketika metode penyelesaian yang sesuai disinyalkan ketika operasi telah selesai.
lpvOverlapped
Penunjuk ke struktur WSAOVERLAPPED .
Jika soket dibuat tanpa atribut yang tumpang tindih, parameter lpOverlapped diabaikan.
Jika s dibuka dengan atribut yang tumpang tindih dan parameter lpOverlapped bukan NULL, operasi dilakukan sebagai operasi yang tumpang tindih (asinkron). Dalam hal ini, parameter lpOverlapped harus menunjuk ke struktur WSAOVERLAPPED yang valid.
Untuk operasi yang tumpang tindih, fungsi WSAIoctl atau WSPIoctl segera kembali, dan metode penyelesaian yang sesuai disinyalkan ketika operasi telah selesai. Jika tidak, fungsi tidak kembali sampai operasi selesai atau terjadi kesalahan.
lpCompletionRoutine
Jenis: LPWSAOVERLAPPED_COMPLETION_ROUTINE _In_opt_
Penunjuk ke rutinitas penyelesaian yang dipanggil ketika operasi telah selesai (diabaikan untuk soket yang tidak tumpang tindih).
lpThreadId
Penunjuk ke struktur WSATHREADID yang akan digunakan oleh penyedia dalam panggilan berikutnya ke WPUQueueApc. Penyedia harus menyimpan struktur WSATHREADID yang direferensikan (bukan penunjuk ke yang sama) sampai setelah fungsi WPUQueueApc kembali.
Catatan Parameter ini hanya berlaku untuk fungsi WSPIoctl .
lpErrno
Penunjuk ke kode kesalahan.
Catatan Parameter ini hanya berlaku untuk fungsi WSPIoctl .
Nilai kembali
Jika operasi berhasil diselesaikan, fungsi WSAIoctl atau WSPIoctl mengembalikan nol.
Jika operasi gagal atau tertunda, fungsi WSAIoctl atau WSPIoctl mengembalikan SOCKET_ERROR. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi WSAGetLastError.
Kode kesalahan | Makna |
---|---|
WSA_IO_PENDING | Operasi I/O yang tumpang tindih sedang berlangsung. Nilai ini dikembalikan jika operasi yang tumpang tindih berhasil dimulai dan penyelesaian akan ditunjukkan di lain waktu. |
WSA_OPERATION_ABORTED | Operasi I/O telah dibatalkan karena keluarnya utas atau permintaan aplikasi. Kesalahan ini dikembalikan jika operasi yang tumpang tindih dibatalkan karena penutupan soket atau eksekusi perintah SIO_FLUSH IOCTL. |
WSAEACCES | Upaya dilakukan untuk mengakses soket dengan cara yang dilarang oleh izin aksesnya. Kesalahan ini dikembalikan dalam beberapa kondisi yang mencakup hal berikut: pengguna tidak memiliki hak istimewa administratif yang diperlukan di komputer lokal atau aplikasi tidak berjalan dalam shell yang ditingkatkan sebagai Administrator bawaan (RunAs administrator ). |
WSAEFAULT | Sistem mendeteksi alamat penunjuk yang tidak valid dalam mencoba menggunakan argumen pointer dalam panggilan. Kesalahan ini dikembalikan dari parameter lpvInBuffer, lpvoutBuffer, lpcbBytesReturned, lpOverlapped atau lpCompletionRoutine tidak sepenuhnya terkandung dalam bagian ruang alamat pengguna yang valid. |
WSAEINPROGRESS | Operasi pemblokiran saat ini sedang dijalankan. Kesalahan ini dikembalikan jika fungsi dipanggil saat panggilan balik sedang berlangsung. |
WSAEINTR | Operasi pemblokiran terganggu oleh panggilan ke WSACancelBlockingCall. Kesalahan ini dikembalikan jika operasi pemblokiran terganggu. |
WSAEINVAL | Argumen yang tidak valid disediakan. Kesalahan ini dikembalikan jika parameter dwIoControlCode bukan perintah yang valid, atau parameter input yang ditentukan tidak dapat diterima, atau perintah tidak berlaku untuk jenis soket yang ditentukan. |
WSAENETDOWN | Operasi soket menemukan jaringan mati. Kesalahan ini dikembalikan jika subsistem jaringan gagal. |
WSAENOTSOCK | Operasi dicoba pada sesuatu yang bukan soket. Kesalahan ini dikembalikan jika deskriptor s bukan soket. |
WSAEOPNOTSUPP | Operasi yang dicoba tidak didukung untuk jenis objek yang direferensikan. Kesalahan ini dikembalikan jika perintah IOCTL yang ditentukan tidak didukung. Kesalahan ini juga dikembalikan jika SIO_TCP_INITIAL_RTO IOCTL tidak didukung oleh penyedia transportasi. |
Keterangan
Aplikasi dapat menggunakan SIO_TCP_INITIAL_RTO IOCTL untuk mengontrol karakteristik transmisi ulang awal (SYN/SYN+ACK) dari soket TCP jika diperlukan. Aplikasi, jika menggunakan opsi ini, harus menyediakan nilai yang sesuai sebelum memulai upaya koneksi TCP pada soket.
IOCTL TCP_INITIAL_RTO_PARAMETERS memungkinkan aplikasi untuk mengonfigurasi batas waktu transmisi ulang awal (SYN) (RTO) yang digunakan oleh soket.
Penunjuk ke struktur TCP_INITIAL_RTO_PARAMETERS yang diteruskan dalam parameter lpvInBuffer memungkinkan aplikasi untuk mengonfigurasi waktu pulang pergi awal (RTT) yang digunakan untuk menghitung batas waktu transmisi ulang. Aplikasi juga dapat mengonfigurasi jumlah transmisi ulang yang akan dicoba sebelum upaya koneksi gagal.