PFN_WSK_SEND_TO fungsi panggilan balik (wsk.h)

Fungsi WskSendTo mengirim data datagram ke alamat transportasi jarak jauh.

Sintaks

PFN_WSK_SEND_TO PfnWskSendTo;

NTSTATUS PfnWskSendTo(
  [in]           PWSK_SOCKET Socket,
  [in]           PWSK_BUF Buffer,
                 ULONG Flags,
  [in, optional] PSOCKADDR RemoteAddress,
  [in]           ULONG ControlInfoLength,
  [in, optional] PCMSGHDR ControlInfo,
  [in, out]      PIRP Irp
)
{...}

Parameter

[in] Socket

Penunjuk ke struktur WSK_SOCKET yang menentukan objek soket untuk soket datagram untuk mengirim datagram.

[in] Buffer

Penunjuk ke struktur WSK_BUF yang diinisialisasi yang menjelaskan buffer data yang berisi datagram yang dikirim melalui soket.

Flags

Parameter ini disediakan untuk penggunaan sistem. Aplikasi WSK harus mengatur parameter ini ke nol.

[in, optional] RemoteAddress

Penunjuk ke struktur yang menentukan alamat transportasi jarak jauh untuk mengirim datagram. Penunjuk ini harus menjadi penunjuk ke jenis struktur SOCKADDR tertentu yang sesuai dengan keluarga alamat yang ditentukan aplikasi WSK saat membuat soket.

Jika aplikasi WSK telah menetapkan alamat transportasi jarak jauh tetap atau alamat transportasi tujuan tetap untuk soket datagram, penunjuk ini bersifat opsional dan mungkin NULL. Jika NULL, datagram dikirim ke alamat transportasi jarak jauh tetap atau alamat transportasi tujuan tetap. Jika non-NULL, datagram dikirim ke alamat transportasi jarak jauh yang ditentukan.

Untuk informasi selengkapnya tentang mengatur alamat transportasi jarak jauh tetap untuk soket datagram, lihat SIO_WSK_SET_REMOTE_ADDRESS.

Untuk informasi selengkapnya tentang mengatur alamat transportasi tujuan tetap untuk soket datagram, lihat SIO_WSK_SET_SENDTO_ADDRESS.

[in] ControlInfoLength

Jumlah byte data dalam buffer yang diacu oleh parameter ControlInfo . Jika tidak ada informasi kontrol yang terkait dengan datagram, parameter ControlInfoLength harus nol.

[in, optional] ControlInfo

Penunjuk ke buffer yang berisi informasi kontrol yang terkait dengan datagram yang sedang dikirim. Data informasi kontrol terdiri dari satu atau beberapa objek data kontrol, yang masing-masing dimulai dengan struktur CMSGHDR . Jika tidak ada informasi kontrol yang terkait dengan datagram, parameter ini harus NULL.

[in, out] Irp

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

Nilai kembali

WskSendTo mengembalikan salah satu kode NTSTATUS berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS
Datagram berhasil dikirim melalui soket. IRP akan diselesaikan dengan status keberhasilan. Bidang IoStatus.Information dari IRP berisi jumlah byte yang dikirim.
STATUS_PENDING
Subsistem WSK tidak dapat segera mengirim datagram melalui soket. Subsistem WSK akan menyelesaikan IRP setelah mengirim datagram melalui soket. Status operasi pengiriman akan dikembalikan di bidang IoStatus.Status dari IRP. Jika operasi berhasil, bidang IoStatus.Information dari IRP akan berisi jumlah byte yang dikirim.
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

Jika fungsi WskSendTo mengembalikan STATUS_PENDING, rantai MDL yang dijelaskan dalam struktur WSK_BUF yang ditunjukkan oleh parameter Buffer harus tetap terkunci dalam memori hingga IRP selesai. Selain itu, buffer yang diacu oleh parameter ControlInfo juga harus tetap valid sampai IRP selesai. Jika aplikasi WSK mengalokasikan rantai MDL atau buffer informasi kontrol dengan salah satu fungsi ExAllocateXxx , aplikasi tidak dapat membebaskan memori dengan fungsi ExFreeXxx yang sesuai sampai setelah IRP selesai. Jika aplikasi WSK mengalokasikan rantai MDL atau buffer informasi kontrol pada tumpukan, aplikasi tidak dapat kembali dari fungsi yang memanggil fungsi WskSendTo sampai setelah IRP selesai.

Subsistem WSK tidak melakukan buffering data saat mengirim datagram melalui soket. Oleh karena itu, panggilan ke fungsi WskSendTo tidak akan diselesaikan oleh subsistem WSK sampai semua data benar-benar dikirim.

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

CMSGHDR

SOCKADDR

WSK_BUF

WSK_PROVIDER_DATAGRAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskControlSocket

WskReceiveFrom

WskReceiveFromEvent