PFN_WSK_DISCONNECT fungsi panggilan balik (wsk.h)

Fungsi WskDisconnect memutuskan sambungan soket berorientasi koneksi atau streaming dari alamat transportasi jarak jauh.

Sintaks

PFN_WSK_DISCONNECT PfnWskDisconnect;

NTSTATUS PfnWskDisconnect(
  [in]           PWSK_SOCKET Socket,
  [in, optional] PWSK_BUF Buffer,
  [in]           ULONG Flags,
  [in, out]      PIRP Irp
)
{...}

Parameter

[in] Socket

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

[in, optional] Buffer

Penunjuk ke struktur WSK_BUF . Struktur ini menjelaskan buffer data yang berisi data yang akan ditransmisikan oleh subsistem WSK ke alamat transportasi jarak jauh sebelum soket terputus. Jika tidak ada data seperti itu yang akan ditransmisikan, aplikasi WSK mengatur penunjuk ini ke NULL. Jika WSK_FLAG_ABORTIVE ditentukan dalam parameter Bendera , parameter Buffer harus NULL.

[in] Flags

Nilai ULONG yang berisi bendera berikut, atau nol:

WSK_FLAG_ABORTIVE

Mengarahkan subsistem WSK untuk melakukan pemutusan sambungan soket secara abortif. Jika aplikasi WSK tidak menentukan bendera ini, subsistem WSK akan melakukan pemutusan soket dengan baik.

[in, out] Irp

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

Nilai kembali

WskDisconnect mengembalikan salah satu kode NTSTATUS berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS
Soket berhasil terputus dari alamat transportasi jarak jauh. IRP akan diselesaikan dengan status keberhasilan.
STATUS_PENDING
Subsistem WSK tidak dapat segera memutuskan sambungan soket. Subsistem WSK akan menyelesaikan IRP setelah memutuskan sambungan soket dari alamat transportasi jarak jauh. Status operasi pemutusan sambungan akan dikembalikan di bidang IoStatus.Status dari IRP.
STATUS_FILE_FORCED_CLOSED
Soket tidak lagi berfungsi. IRP akan diselesaikan dengan status kegagalan. Aplikasi WSK harus memanggil fungsi WskCloseSocket untuk menutup soket sesegera mungkin.
Kode status lainnya
Terjadi kesalahan. IRP akan diselesaikan dengan status kegagalan.

Keterangan

Aplikasi WSK dapat memanggil fungsi WskDisconnect hanya pada soket berorientasi koneksi atau streaming yang sebelumnya terhubung ke alamat transportasi jarak jauh atau pada soket yang diterimanya pada soket mendengarkan.

WskDisconnect menyebabkan subsistem WSK memberi tahu alamat transportasi jarak jauh, melalui cara apa pun yang sesuai untuk transportasi yang mendasar, bahwa koneksi sedang terputus. Jika parameter Buffer bukan NULL, subsistem WSK mengirimkan data dalam buffer ke alamat transportasi jarak jauh sebelum memutuskan sambungan soket.

Jika pemutusan sambungan dilakukan dengan baik, subsistem WSK menunggu hingga semua data pengiriman yang beredar telah dikirim sebelum memutuskan sambungan soket. Setelah soket terputus, aplikasi WSK tidak dapat mengirim data tambahan apa pun ke alamat transportasi jarak jauh. Namun, aplikasi WSK masih dapat menerima data tambahan dari alamat transportasi jarak jauh sampai aplikasi jarak jauh memutuskan akhir soketnya.

Perhatikan bahwa tidak semua transportasi mendukung koneksi setengah terbuka. Jika transportasi tidak mendukung koneksi setengah terbuka, aplikasi WSK tidak akan menerima data tambahan dari alamat transportasi jarak jauh setelah pemutusan sambungan dengan baik telah dilakukan.

Dengan pemutusan sambungan yang anggun, IRP selesai hanya ketika operasi pemutusan sambungan sepenuhnya diselesaikan oleh protokol transportasi. Untuk beberapa protokol transportasi, IRP mungkin tidak selesai jika ada masalah saat mengirimkan data ke alamat transportasi jarak jauh. Dalam situasi ini, aplikasi WSK dapat pulih dengan memanggil fungsi WskDisconnect lagi dan menentukan bendera WSK_FLAG_ABORTIVE atau dengan memanggil fungsi WskCloseSocket . Dalam kedua situasi, subsistem WSK akan secara abortif memutuskan soket dan memaksa penyelesaian IRP yang tertunda.

Jika pemutusan sambungan abortif dilakukan, subsistem WSK membatalkan semua operasi pengiriman yang sedang berlangsung dan tertunda dan tidak menunggu untuk memutuskan sambungan soket. Setelah pemutusan sambungan abortif, aplikasi WSK tidak dapat mengirim data tambahan apa pun ke alamat transportasi jarak jauh atau menerima data tambahan dari alamat transportasi jarak jauh.

Aplikasi WSK dapat sepenuhnya menutup koneksi dengan memanggil fungsi WskCloseSocket .

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_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskConnect

WskDisconnectEvent

WskSocketConnect