Fungsi WPUModifyIFSHandle (ws2spi.h)
Fungsi WPUModifyIFSHandle menerima handel IFS yang dimodifikasi (mungkin) dari Ws2_32.dll.
Sintaks
SOCKET WPUModifyIFSHandle(
[in] DWORD dwCatalogEntryId,
[in] SOCKET ProposedHandle,
[out] LPINT lpErrno
);
Parameter
[in] dwCatalogEntryId
Deskriptor mengidentifikasi penyedia layanan panggilan.
[in] ProposedHandle
HANDEL IFS yang dialokasikan oleh penyedia.
[out] lpErrno
Arahkan ke kode kesalahan.
Mengembalikan nilai
Jika tidak ada kesalahan yang terjadi, WPUModifyIFSHandle mengembalikan handel soket yang dimodifikasi. Jika tidak, kode mengembalikan INVALID_SOCKET, dan kode kesalahan tertentu tersedia di lpErrno.
Kode kesalahan | Makna |
---|---|
Handel yang diusulkan tidak valid. |
Keterangan
Handel WPUModifyIFSHandle memungkinkan WS2_32.dll menyederhanakan operasi internalnya dengan mengembalikan versi yang mungkin dimodifikasi dari handel IFS yang disediakan. Handel yang dikembalikan dijamin tidak dapat dibedakan dari handel yang diusulkan sejauh menyangkut sistem operasi. Penyedia IFS harus memanggil fungsi ini sebelum mengembalikan deskriptor soket yang baru dibuat ke penyedia layanan. Penyedia layanan hanya akan menggunakan handel yang dimodifikasi untuk operasi soket berikutnya. Rutinitas ini hanya digunakan oleh penyedia IFS yang deskriptor soketnya adalah handel IFS nyata.
Prosedur ini juga dapat digunakan oleh penyedia berlapis yang berlapis di atas penyedia IFS dasar dan ingin mengekspos handel soket penyedia dasar sebagai miliknya sendiri alih-alih membuatnya dengan panggilan WPUCreateSocketHandle . Penyedia berlapis yang ingin "melewati" soket IFS menangani yang diterimanya dari lapisan berikutnya dalam rantai dapat memanggil WPUModifyIFSHandle, meneruskan ID entri katalognya sendiri sebagai dwCatalogEntryId. Ini menginformasikan DLL Soket Windows bahwa lapisan ini, dan bukan lapisan berikutnya, harus menjadi target untuk panggilan SPI yang melibatkan handel soket tersebut.
Ada beberapa batasan yang harus diamati penyedia berlapis jika diperlukan pendekatan ini.
- Penyedia harus mengekspos titik masuk penyedia dasar untuk LPWSPSend dan LPWSPRecv dalam tabel pengiriman prosedur yang dikembalikannya pada saat WSPStartup untuk memastikan akses klien Windows Sockets SPI ke fungsi-fungsi ini seefisien mungkin.
- Penyedia tidak dapat mengandalkan fungsi LPWSPSend dan LPWSPRecv yang dipanggil untuk semua I/O, terutama dalam kasus fungsi sistem I/O ReadFile dan WriteFile. Fungsi-fungsi ini akan melewati penyedia berlapis dan memanggil implementasi penyedia IFS dasar secara langsung bahkan jika penyedia berlapis menempatkan titik masuknya sendiri untuk fungsi-fungsi ini ke dalam tabel pengiriman prosedur.
- Penyedia tidak dapat mengandalkan kemampuan apa pun untuk pasca-proses Tumpang tindih I/O menggunakan LPWSPSend, LPWSPSendTo, LPWSPRecv, LPWSPRecvFrom, atau LPWSPIoctl. Pemberitahuan pasca-pemrosesan dapat terjadi melalui port penyelesaian dan melewati penyedia berlapis sepenuhnya. Penyedia berlapis tidak memiliki cara untuk menentukan bahwa port penyelesaian digunakan atau menentukan port apa itu. Penyedia berlapis tidak memiliki cara untuk memasukkan dirinya ke dalam urutan pemberitahuan.
- Penyedia harus melewati semua permintaan I/O yang tumpang tindih langsung ke penyedia dasar menggunakan parameter tumpang tindih asli (misalnya, struktur WSAOVERLAPPED dan penunjuk rutin penyelesaian). Penyedia harus mengekspos titik masuk penyedia dasar untuk WSPGetOverlappedResult. Karena beberapa permintaan I/O yang tumpang tindih dapat melewati penyedia berlapis sepenuhnya, penyedia berlapis tidak dapat menandai struktur WSAOVERLAPPED dengan andal untuk menentukan mana yang dapat melaporkan hasilnya, dan mana yang harus diteruskan ke WSPGetOverlappedResult penyedia yang mendasar. Ini secara efektif berarti bahwa LPWSPIoctl harus menjadi operasi pass-through ke penyedia yang mendasar.
Persyaratan
Persyaratan | Nilai |
---|---|
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 |