Bagikan melalui


Fungsi WSAGetOverlappedResult (winsock2.h)

Fungsi WSAGetOverlappedResult mengambil hasil operasi yang tumpang tindih pada soket yang ditentukan.

Sintaks

BOOL WSAAPI WSAGetOverlappedResult(
  [in]  SOCKET          s,
  [in]  LPWSAOVERLAPPED lpOverlapped,
  [out] LPDWORD         lpcbTransfer,
  [in]  BOOL            fWait,
  [out] LPDWORD         lpdwFlags
);

Parameter

[in] s

Deskriptor yang mengidentifikasi soket.

Ini adalah soket yang sama yang ditentukan ketika operasi yang tumpang tindih dimulai oleh panggilan ke salah satu fungsi Winsock yang mendukung operasi yang tumpang tindih. Fungsi-fungsi ini termasuk AcceptEx, ConnectEx, DisconnectEx, TransmitFile, TransmitPackets, WSARecv, WSARecvFrom, LPFN_WSARECVMSG (WSARecvMsg), WSASend, WSASendMsg, WSASendTo, dan WSAIoctl.

[in] lpOverlapped

Penunjuk ke struktur WSAOVERLAPPED yang ditentukan ketika operasi yang tumpang tindih dimulai. Parameter ini tidak boleh berupa penunjuk NULL .

[out] lpcbTransfer

Pointer ke variabel 32-bit yang menerima jumlah byte yang benar-benar ditransfer oleh operasi kirim atau terima, atau oleh fungsi WSAIoctl . Parameter ini tidak boleh berupa penunjuk NULL .

[in] fWait

Bendera yang menentukan apakah fungsi harus menunggu operasi tumpang tindih yang tertunda selesai. Jika TRUE, fungsi tidak mengembalikan sampai operasi selesai. Jika FALSE dan operasi masih tertunda, fungsi mengembalikan FALSE dan fungsi WSAGetLastError mengembalikan WSA_IO_INCOMPLETE. Parameter fWait dapat diatur ke TRUE hanya jika operasi yang tumpang tindih memilih pemberitahuan penyelesaian berbasis peristiwa.

[out] lpdwFlags

Penunjuk ke variabel 32-bit yang akan menerima satu atau beberapa bendera yang melengkapi status penyelesaian. Jika operasi yang tumpang tindih dimulai melalui WSARecv atau WSARecvFrom, parameter ini akan berisi nilai hasil untuk parameter lpFlags . Parameter ini tidak boleh berupa penunjuk NULL .

Nilai kembali

Jika WSAGetOverlappedResult berhasil, nilai yang dikembalikan adalah TRUE. Ini berarti bahwa operasi yang tumpang tindih telah berhasil diselesaikan dan bahwa nilai yang ditunjukkan oleh lpcbTransfer telah diperbarui.

Jika WSAGetOverlappedResult mengembalikan FALSE, ini berarti bahwa operasi yang tumpang tindih belum selesai, operasi yang tumpang tindih selesai tetapi dengan kesalahan, atau status penyelesaian operasi yang tumpang tindih tidak dapat ditentukan karena kesalahan dalam satu atau beberapa parameter ke WSAGetOverlappedResult. Jika gagal, nilai yang ditunjukkan oleh lpcbTransfer tidak akan diperbarui. Gunakan WSAGetLastError untuk menentukan penyebab kegagalan (baik oleh fungsi WSAGetOverlappedResult atau oleh operasi tumpang tindih terkait).

Kode kesalahan Makna
WSANOTINITIALISED
Panggilan WSAStartup yang berhasil harus terjadi sebelum menggunakan fungsi ini.
WSAENETDOWN
Subsistem jaringan gagal.
WSAENOTSOCK
Deskriptor bukan soket.
WSA_INVALID_HANDLE
Parameter hEvent dari struktur WSAOVERLAPPED tidak berisi handel objek peristiwa yang valid.
WSA_INVALID_PARAMETER
Salah satu parameter tidak dapat diterima.
WSA_IO_INCOMPLETE
Parameter fWait adalah FALSE dan operasi I/O belum selesai.
WSAEFAULT
Satu atau beberapa parameter lpOverlapped, lpcbTransfer, atau lpdwFlags tidak berada di bagian ruang alamat pengguna yang valid. Kesalahan ini dikembalikan jika parameter lpOverlapped, lpcbTransfer, atau lpdwFlags adalah pointer NULL pada Windows Server 2003 dan yang lebih lama.

Keterangan

Fungsi WSAGetOverlappedResult melaporkan hasil operasi tumpang tindih yang ditentukan dalam parameter lpOverlapped untuk soket yang ditentukan dalam parameter s . Fungsi WSAGetOverlappedResult melewati deskriptor soket dan struktur WSAOVERLAPPED yang ditentukan ketika fungsi tumpang tindih dipanggil. Operasi yang tertunda ditunjukkan ketika fungsi yang memulai operasi mengembalikan FALSE dan fungsi WSAGetLastError mengembalikan WSA_IO_PENDING. Ketika operasi I/O seperti WSARecv tertunda, fungsi yang memulai operasi mereset anggota hEvent dari struktur WSAOVERLAPPED ke status tidak ditandatangani. Kemudian, ketika operasi yang tertunda telah selesai, sistem mengatur objek peristiwa ke status yang disinyalkan.

Jika parameter fWaitTRUE, WSAGetOverlappedResult menentukan apakah operasi yang tertunda telah selesai dengan menunggu objek peristiwa berada dalam status disinyalkan. Klien dapat mengatur parameter fWait ke TRUE, tetapi hanya jika memilih pemberitahuan penyelesaian berbasis peristiwa saat operasi I/O diminta. Jika bentuk pemberitahuan lain dipilih, penggunaan parameter hEvent struktur WSAOVERLAPPED berbeda, dan pengaturan fWait ke TRUE menyebabkan hasil yang tidak dapat diprediksi.

Jika fungsi WSAGetOverlappedResult dipanggil dengan parameter lpOverlapped, lpcbTransfer, atau lpdwFlags yang diatur ke pointer NULL di Windows Vista, ini akan mengakibatkan pelanggaran akses. Jika fungsi WSAGetOverlappedResult dipanggil dengan parameter lpOverlapped, lpcbTransfer, atau lpdwFlags yang diatur ke pointer NULL pada Windows Server 2003 dan yang lebih lama, ini akan mengakibatkan kode kesalahan WSAEFAULT dikembalikan.

Catatan Semua I/O dibatalkan ketika utas keluar. Untuk soket yang tumpang tindih, operasi asinkron yang tertunda dapat gagal jika utas ditutup sebelum operasi selesai. Lihat ExitThread untuk informasi selengkapnya.
 
Windows Phone 8: Fungsi ini didukung untuk aplikasi Windows Phone Store di Windows Phone 8 dan yang lebih baru.

Windows 8.1 dan Windows Server 2012 R2: Fungsi ini didukung untuk aplikasi Windows Store di Windows 8.1, Windows Server 2012 R2, dan yang lebih baru.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8.1, Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header winsock2.h
Pustaka Ws2_32.lib
DLL Ws2_32.dll

Lihat juga

WSAAccept

WSAConnect

WSACreateEvent

WSAIoctl

WSARecv

WSARecvFrom

WSASend

WSASendTo

WSAWaitForMultipleEvents

Fungsi Winsock

Referensi Winsock