PFN_WSK_GET_LOCAL_ADDRESS fungsi panggilan balik (wsk.h)

Fungsi WskGetLocalAddress mengambil alamat transportasi lokal soket.

Sintaks

PFN_WSK_GET_LOCAL_ADDRESS PfnWskGetLocalAddress;

NTSTATUS PfnWskGetLocalAddress(
  [in]      PWSK_SOCKET Socket,
  [out]     PSOCKADDR LocalAddress,
  [in, out] PIRP Irp
)
{...}

Parameter

[in] Socket

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

[out] LocalAddress

Penunjuk ke buffer yang dialokasikan penelepon yang menerima alamat transportasi lokal untuk soket. Buffer harus terletak di memori non-halaman. Buffer juga harus cukup besar untuk berisi jenis struktur SOCKADDR tertentu yang sesuai dengan keluarga alamat yang ditentukan aplikasi WSK saat membuat soket.

Untuk soket berorientasi koneksi yang diterima aplikasi WSK pada soket mendengarkan, keluarga alamat sama dengan keluarga alamat yang ditentukan aplikasi WSK saat membuat soket mendengarkan.

[in, out] Irp

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

Nilai kembali

WskGetLocalAddress mengembalikan salah satu kode NTSTATUS berikut:

Menampilkan kode Deskripsi
STATUS_SUCCESS
Alamat transportasi lokal untuk soket berhasil diambil. IRP akan diselesaikan dengan status keberhasilan.
STATUS_PENDING
Subsistem WSK tidak dapat segera mengambil alamat transportasi lokal untuk soket. Subsistem WSK akan menyelesaikan IRP setelah mengambil alamat transportasi lokal untuk soket. Status operasi pengambilan akan dikembalikan di bidang IoStatus.Status dari IRP.
STATUS_INVALID_DEVICE_STATE
Soket tidak terikat ke alamat transportasi lokal. IRP akan diselesaikan dengan status kegagalan.
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 WskGetLocalAddress hanya pada soket yang telah terikat ke alamat transportasi lokal.

Soket mendengarkan, datagram, atau aliran terikat ke alamat transportasi lokal saat aplikasi WSK memanggil fungsi WskBind .

Soket berorientasi koneksi terikat ke alamat transportasi lokal dengan salah satu cara berikut:

  • Aplikasi WSK memanggil fungsi WskBind .
  • Aplikasi WSK membuat, mengikat, dan menyambungkan soket dengan memanggil fungsi WskSocketConnect .
  • Subsistem WSK mengikat soket ketika aplikasi WSK menerima permintaan koneksi masuk pada soket mendengarkan.
Fungsi WskGetLocalAddress sangat berguna untuk menentukan alamat transportasi lokal tertentu yang ditetapkan ke soket oleh protokol transportasi ketika soket terikat ke alamat wildcard lokal. Untuk soket berorientasi koneksi yang terikat ke alamat wildcard lokal, alamat transportasi lokal mungkin tidak ditetapkan ke soket oleh protokol transportasi hingga soket terhubung ke alamat transportasi jarak jauh. Langkah di mana alamat transportasi lokal ditetapkan ke soket bergantung pada protokol transportasi. Untuk TCP, nomor port ditetapkan ketika soket berorientasi koneksi terikat, tetapi alamat IP tidak ditetapkan sampai soket tersambung.

Jika fungsi WskGetLocalAddress mengembalikan STATUS_PENDING, buffer yang ditunjukkan oleh parameter LocalAddress harus tetap valid sampai IRP selesai. Jika aplikasi WSK mengalokasikan buffer dengan salah satu fungsi ExAllocateXxx , aplikasi tidak dapat membebaskan memori dengan fungsi ExFreeXxx yang sesuai sampai setelah IRP selesai. Jika aplikasi WSK mengalokasikan buffer pada tumpukan, aplikasi tidak dapat kembali dari fungsi yang memanggil fungsi WskGetLocalAddress hingga setelah IRP selesai.

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

SOCKADDR

WSK_PROVIDER_DATAGRAM_DISPATCH WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_LISTEN_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskAccept

WskAcceptEvent

WskBind

WskCloseSocket

WskConnect

WskGetRemoteAddress

WskSocketConnect