PFN_WSK_CLOSE_SOCKET fungsi panggilan balik (wsk.h)

Fungsi WskCloseSocket menutup soket dan membebaskan sumber daya terkait.

Sintaks

PFN_WSK_CLOSE_SOCKET PfnWskCloseSocket;

NTSTATUS PfnWskCloseSocket(
  [in]      PWSK_SOCKET Socket,
  [in, out] PIRP Irp
)
{...}

Parameter

[in] Socket

Penunjuk ke struktur WSK_SOCKET yang menentukan objek soket untuk soket yang sedang ditutup.

[in, out] Irp

Penunjuk ke IRP yang dialokasikan pemanggil yang digunakan subsistem WSK untuk menyelesaikan operasi penutupan secara asinkron. Untuk informasi selengkapnya tentang menggunakan runtime integrasi dengan fungsi WSK, lihat Menggunakan IRP dengan Fungsi Kernel Winsock.

Nilai kembali

WskCloseSocket mengembalikan salah satu kode NTSTATUS berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS
Soket berhasil ditutup. IRP akan diselesaikan dengan status keberhasilan.
STATUS_PENDING
Subsistem WSK tidak dapat segera menutup soket. Subsistem WSK akan menyelesaikan IRP setelah menutup soket. Status operasi penutupan akan dikembalikan di bidang IoStatus.Status dari IRP.
Kode status lainnya
Terjadi kesalahan. IRP akan diselesaikan dengan status kegagalan.

Keterangan

Sebelum memanggil fungsi WskCloseSocket , aplikasi WSK harus memastikan bahwa tidak ada panggilan fungsi lain yang sedang berlangsung ke salah satu fungsi soket, termasuk fungsi ekstensi apa pun, di utas aplikasi lainnya. Misalnya, aplikasi WSK tidak boleh memanggil WskCloseSocket pada soket dalam satu utas saat aplikasi memanggil WskSend pada soket yang sama di utas lain. Setiap panggilan yang sedang berlangsung ke fungsi soket harus mengembalikan kontrol kembali ke aplikasi WSK sebelum memanggil WskCloseSocket untuk menutup soket. Namun, aplikasi WSK dapat memanggil WskCloseSocket jika ada IRP yang tertunda dari panggilan sebelumnya ke fungsi soket yang belum selesai.

Memanggil fungsi WskCloseSocket menyebabkan subsistem WSK membatalkan dan menyelesaikan semua IRP yang tertunda dari panggilan sebelumnya ke fungsi soket. Subsistem WSK juga memastikan bahwa setiap fungsi panggilan balik peristiwa yang sedang berlangsung telah mengembalikan kontrol kembali ke subsistem WSK sebelum menutup soket.

Setelah aplikasi WSK memanggil WskCloseSocket, aplikasi tersebut tidak boleh melakukan panggilan lebih lanjut ke salah satu fungsi soket.

Jika aplikasi WSK menerapkan deskriptor keamanan ke soket, salinan cache deskriptor keamanan yang ditentukan dalam panggilan ke WskSocket, WskSocketConnect, atau WskControlSocket tidak dirilis saat soket ditutup. Aplikasi WSK harus merilis salinan cache deskriptor keamanan dengan menggunakan operasi kontrol klien WSK_RELEASE_SD ketika pendeskripsi keamanan tidak lagi diperlukan.

Subsistem WSK membatalkan alokasi memori untuk objek soket soket, WSK_SOCKET, yang dialokasikan oleh subsistem WSK saat soket dibuat.

Untuk soket berorientasi koneksi, fungsi WskCloseSocket selalu melakukan pemutusan abortif soket kecuali soket sudah sepenuhnya terputus di kedua arah. Untuk memutuskan sambungan soket berorientasi koneksi dengan anggun dari alamat transportasi jarak jauh, aplikasi WSK harus memanggil fungsi WskDisconnect .

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows Vista dan versi yang lebih baru dari sistem operasi Windows.
Target Platform Universal
Header wsk.h (termasuk Wsk.h)
IRQL <= DISPATCH_LEVEL

Lihat juga

WSK_PROVIDER_BASIC_DISPATCH

WSK_PROVIDER_DATAGRAM_DISPATCH WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_LISTEN_DISPATCH

WSK_SOCKET

WskControlSocket

WskDisconnect

WskSocket

WskSocketConnect