Fungsi WPUCreateSocketHandle (ws2spi.h)
Fungsi WPUCreateSocketHandle membuat handel soket baru.
Sintaks
SOCKET WPUCreateSocketHandle(
[in] DWORD dwCatalogEntryId,
[in] DWORD_PTR dwContext,
[out] LPINT lpErrno
);
Parameter
[in] dwCatalogEntryId
Deskriptor mengidentifikasi penyedia layanan panggilan.
[in] dwContext
Nilai konteks untuk dikaitkan dengan handel soket baru.
[out] lpErrno
Arahkan ke kode kesalahan.
Mengembalikan nilai
Jika tidak ada kesalahan yang terjadi, WPUCreateSocketHandle mengembalikan handel soket baru. Jika tidak, kode mengembalikan INVALID_SOCKET, dan kode kesalahan tertentu tersedia di lpErrno.
Kode kesalahan | Makna |
---|---|
Tidak tersedia cukup buffer untuk membuat handel soket baru. |
Keterangan
Fungsi WPUCreateSocketHandle membuat handel soket baru untuk penyedia yang ditentukan. Handel yang dibuat oleh WPUCreateSocketHandle tidak dapat dibedakan dari handel sistem file sejati. Ini signifikan dalam dua hal. Pertama, arsitektur Windows Socket 2 mengurus pengalihan fungsi sistem file ReadFile dan WriteFile ke fungsi LPWSPRecv dan LPWSPSend penyedia layanan ini. Kedua, dalam sistem operasi yang mendukung port penyelesaian, arsitektur Windows Sockets 2 mendukung pengaitan port penyelesaian dengan handel soket dan menggunakannya untuk melaporkan penyelesaian I/O yang tumpang tindih.
Prosedur ini sangat menarik bagi Penyedia Layanan Berlapis. Penyedia layanan berlapis dapat menggunakan prosedur ini, alih-alih WPUModifyIFSHandle untuk membuat handel soket yang diekspos ke kliennya. Keuntungan menggunakan prosedur ini adalah bahwa semua permintaan I/O yang melibatkan soket dapat dijamin untuk melalui penyedia layanan ini. Ini benar bahkan jika klien mengasumsikan bahwa soket adalah handel sistem file dan memanggil fungsi sistem file ReadFile dan WriteFile (meskipun akan membayar penalti performa untuk asumsi ini).
Jaminan bahwa semua I/O melewati lapisan ini adalah persyaratan untuk lapisan yang perlu memproses aliran I/O baik sebelum atau sesudah operasi I/O yang sebenarnya. Membuat handel soket menggunakan WPUCreateSocketHandle dan menentukan tabel pengiriman prosedur antarmuka penyedia layanan yang sesuai pada saat WSPStartup memastikan bahwa lapisan memiliki kesempatan untuk terlibat dalam memulai setiap operasi I/O. Ketika permintaan klien tumpang tindih operasi I/O, lapisan penyedia layanan ini biasanya harus mengatur untuk masuk ke jalur pemberitahuan penyelesaian I/O juga.
Untuk melihat mengapa ini benar, pertimbangkan apa yang terjadi jika klien mengaitkan port penyelesaian dengan handel soket untuk tujuan pemberitahuan penyelesaian I/O yang tumpang tindih. Port dikaitkan dengan handel soket yang diekspos oleh lapisan ini, bukan handel soket lapisan berikutnya. Tidak ada cara bagi lapisan ini untuk menentukan apakah port penyelesaian telah dikaitkan atau apa port tersebut. Ketika lapisan ini memanggil operasi I/O lapisan berikutnya, lapisan ini menggunakan handel soket lapisan berikutnya. Handel soket lapisan berikutnya tidak akan memiliki asosiasi port penyelesaian yang sama. Pemberitahuan port penyelesaian klien yang diharapkan tidak akan terjadi tanpa bantuan tambahan.
Cara biasa yang dilakukan penyedia layanan berlapis adalah dengan mengganti struktur I/O yang tumpang tindih yang berbeda dan parameter I/O yang tumpang tindih yang berbeda saat memanggil operasi I/O di lapisan berikutnya. Struktur I/O yang tumpang tindih dengan pengganti mereferensikan struktur dan parameter klien yang tumpang tindih yang disimpan. Pemanggilan lapisan berikutnya menyiapkan pemberitahuan panggilan balik. Ketika pemberitahuan panggilan balik terjadi, lapisan ini melakukan setiap pasca-pemrosesan yang diinginkan, mengambil informasi I/O yang tumpang tindih yang disimpan atas nama klien, membuang struktur pengganti, dan meneruskan pemberitahuan penyelesaian yang sesuai ke klien.
Persyaratan
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | ws2spi.h |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk