Fungsi panggilan balik LPWSPCLEANUP (ws2spi.h)
Fungsi LPWSPCleanup menghentikan penggunaan penyedia layanan Windows Sockets.
Sintaks
LPWSPCLEANUP Lpwspcleanup;
int Lpwspcleanup(
[out] LPINT lpErrno
)
{...}
Parameter
[out] lpErrno
Arahkan ke kode kesalahan.
Menampilkan nilai
Nilai yang dikembalikan adalah nol jika operasi telah berhasil dimulai. Jika tidak, nilai SOCKET_ERROR dikembalikan, dan nomor kesalahan tertentu tersedia di lpErrno.
Kode Kesalahan | Makna |
---|---|
Panggilan **WSPStartup** yang berhasil harus terjadi sebelum menggunakan fungsi ini. | |
Subsistem jaringan gagal. | |
Pengidentifikasi penyedia yang diberikan kepada penyedia ruang nama tidak dikelola oleh penyedia ruang nama. |
Keterangan
Klien Windows Sockets 2 SPI diperlukan untuk melakukan panggilan WSPStartup yang sukses sebelum dapat menggunakan penyedia layanan Winsock. Ketika telah menyelesaikan penggunaan penyedia layanan Winsock, klien SPI akan memanggil LPWSPCleanup untuk membatalkan pendaftaran dirinya dari penyedia layanan Winsock dan memungkinkan penyedia layanan untuk membebaskan sumber daya apa pun yang dialokasikan atas nama klien Windows Sockets 2. Diperbolehkan bagi klien SPI untuk melakukan lebih dari satu panggilan WSPStartup . Untuk setiap panggilan WSPStartup , panggilan LPWSPCleanup yang sesuai juga akan dikeluarkan. Hanya LPWSPCleanup akhir untuk penyedia layanan yang melakukan pembersihan aktual; panggilan sebelumnya hanya mengurangi jumlah referensi internal di penyedia layanan Winsock.
Ketika jumlah referensi internal mencapai nol dan operasi pembersihan aktual dimulai, setiap pemblokiran tertunda atau panggilan asinkron yang dikeluarkan oleh utas apa pun dalam proses ini dibatalkan tanpa memposting pesan pemberitahuan apa pun atau menandakan objek peristiwa apa pun. Setiap operasi kirim dan terima yang tertunda tumpang tindih (LPWSPSend, LPWSPSendTo, LPWSPRecv, LPWSPRecvFrom dengan soket tumpang tindih) yang dikeluarkan oleh utas apa pun dalam proses ini juga dibatalkan tanpa mengatur objek peristiwa atau memanggil rutinitas penyelesaian, jika ditentukan. Dalam hal ini, operasi tumpang tindih yang tertunda gagal dengan status kesalahan WSA_OPERATION_ABORTED. Soket apa pun yang terbuka ketika LPWSPCleanup dipanggil diatur ulang dan secara otomatis dibatalkan alokasinya seolah-olah LPWSPCloseSocket dipanggil; soket yang telah ditutup dengan LPWSPCloseSocket tetapi masih memiliki data yang tertunda untuk dikirim tidak terpengaruh, tetapi data yang tertunda masih dikirim.
Fungsi ini tidak boleh kembali sampai DLL penyedia layanan disiapkan untuk dibongkar dari memori. Secara khusus, setiap data yang tersisa untuk ditransmisikan harus sudah dikirim atau diantrekan untuk transmisi oleh bagian dari tumpukan transportasi yang tidak akan dibongkar dari memori bersama dengan DLL penyedia layanan.
Penyedia layanan Winsock harus siap untuk menangani proses yang berakhir tanpa memanggil LPWSPCleanup (misalnya, sebagai akibat dari kesalahan). Penyedia layanan Winsock harus memastikan bahwa LPWSPCleanup meninggalkan segalanya dalam keadaan di mana Ws2_32.dll dapat segera memanggil WSPStartup untuk membangun kembali penggunaan Winsock.
Persyaratan
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Header | ws2spi.h |