Bagikan melalui


Fungsi panggilan balik LPNSPSETSERVICE (ws2spi.h)

Fungsi NSPSetService mendaftarkan atau membatalkan pendaftaran instans layanan dalam namespace layanan.

Sintaks

LPNSPSETSERVICE Lpnspsetservice;

INT Lpnspsetservice(
  [in] LPGUID lpProviderId,
  [in] LPWSASERVICECLASSINFOW lpServiceClassInfo,
  [in] LPWSAQUERYSETW lpqsRegInfo,
  [in] WSAESETSERVICEOP essOperation,
  [in] DWORD dwControlFlags
)
{...}

Parameter

[in] lpProviderId

Penunjuk ke GUID penyedia namespace layanan tertentu tempat layanan terdaftar.

[in] lpServiceClassInfo

Informasi skema kelas layanan.

[in] lpqsRegInfo

Informasi properti yang akan diperbarui saat pendaftaran.

[in] essOperation

Jenis operasi yang diminta.

Parameter ini dapat menjadi salah satu nilai dari jenis enumerasi WSAESETSERVICEOP yang ditentukan dalam file header Winsock2.h .

Nilai Makna
RNRSERVICE_REGISTER
0
Daftarkan layanan. Untuk namespace Service Advertising Protocol (SAP) yang digunakan dalam lingkungan NetWare, ini berarti mengirim siaran berkala. Ini adalah NOP untuk namespace Domain Name System (DNS). Untuk penyimpanan data persisten, ini berarti memperbarui informasi alamat.
RNRSERVICE_DEREGISTER
1
Batalkan pendaftaran layanan. Untuk namespace layanan SAP, ini berarti berhenti mengirim siaran berkala. Ini adalah NOP untuk namespace DNS. Untuk penyimpanan data persisten, ini berarti menghapus informasi alamat.
RNRSERVICE_DELETE
2
Hapus layanan dari nama dinamis dan ruang persisten. Untuk layanan yang diwakili oleh beberapa struktur CSADDR_INFO (menggunakan bendera SERVICE_MULTIPLE), hanya alamat yang disediakan yang akan dihapus, dan ini harus cocok dengan struktur **CSADDR_INFO** yang sesuai yang disediakan ketika layanan terdaftar.

[in] dwControlFlags

Sekumpulan bendera yang mengontrol operasi layanan yang diminta.

Nilai yang mungkin untuk parameter ini ditentukan dalam file header Winsock2.h .

Nilai Makna
SERVICE_MULTIPLE
0x00000001
Mengontrol cakupan operasi.

Ketika nilai ini diatur, tindakan hanya dilakukan pada set alamat yang diberikan. Operasi register tidak membatalkan alamat yang ada dan operasi pembatalan pendaftaran hanya membatalkan set alamat yang diberikan.

Ketika nilai ini tidak ada, alamat layanan dikelola sebagai grup. Register atau deregister membatalkan semua alamat yang ada sebelum menambahkan set alamat yang diberikan.

Nilai kembali

Fungsi harus mengembalikan NO_ERROR (nol) jika rutinitas berhasil. Ini harus mengembalikan SOCKET_ERROR (–1) jika rutinitas gagal dan harus mengatur kode kesalahan yang sesuai menggunakan WSASetLastError.

Kode kesalahan Makna
WSAEACCES
Rutinitas panggilan tidak memiliki hak istimewa yang memadai untuk menginstal layanan.
WSA_NOT_ENOUGH_MEMORY
Tidak tersedia cukup memori untuk melakukan operasi ini.
WSAEINVAL
Satu atau beberapa parameter tidak valid, atau hilang, untuk penyedia ini.
WSAEOPNOTSUPP
Operasi ini tidak didukung. Kesalahan ini dikembalikan jika penyedia namespace tidak mengimplementasikan fungsi ini.
WSASERVICE_NOT_FOUND
Layanan tidak diketahui. Layanan tidak dapat ditemukan di namespace yang ditentukan.

Keterangan

Tabel berikut mencantumkan nilai yang tersedia untuk essOperation dan dwControlFlags.

Operasi Bendera Layanan sudah ada Layanan tidak ada
**RNRSERVICE_REGISTER** Tidak ada Menimpa objek . Hanya menggunakan alamat yang ditentukan. Objek TERDAFTAR. Membuat objek baru. Hanya menggunakan alamat yang ditentukan. Objek TERDAFTAR.
**RNRSERVICE_REGISTER** **SERVICE_MULTIPLE** Updates objek. Menambahkan alamat baru ke set yang sudah ada. Objek TERDAFTAR. Membuat objek baru. Menggunakan semua alamat yang ditentukan. Objek TERDAFTAR.
**RNRSERVICE_DEREGISTER** Tidak ada Menghapus semua alamat, tetapi tidak menghapus objek dari namespace. Objek TIDAK TERDAFTAR. WSASERVICE_NOT_FOUND
**RNRSERVICE_DEREGISTER** **SERVICE_MULTIPLE** Updates objek. Hanya menghapus alamat yang ditentukan. Hanya tandai objek sebagai DEREGISTERED jika tidak ada alamat. Tidak menghapus dari namespace layanan. WSASERVICE_NOT_FOUND
**RNRSERVICE_DELETE** Tidak ada Menghapus objek dari namespace layanan. WSASERVICE_NOT_FOUND
**RNRSERVICE_DELETE** **SERVICE_MULTIPLE** Hanya menghapus alamat yang ditentukan. Hanya menghapus objek dari namespace jika tidak ada alamat yang tersisa. WSASERVICE_NOT_FOUND
 

Ketika parameter dwControlFlags diatur ke SERVICE_MULTIPLE, ini memungkinkan aplikasi untuk mengelola alamatnya secara independen. Ini berguna ketika aplikasi harus mengelola protokolnya satu per satu atau ketika layanan berada di lebih dari satu komputer. Misalnya, ketika layanan menggunakan lebih dari satu protokol, satu soket mendengarkan dapat dibatalkan, tetapi soket lainnya tetap beroperasi. Dalam contoh ini, layanan dapat membatalkan pendaftaran alamat yang dibatalkan tanpa memengaruhi alamat lain.

Saat menggunakan SERVICE_MULTIPLE, aplikasi tidak boleh membiarkan alamat lama tetap berada di objek . Ini dapat terjadi jika aplikasi dibatalkan tanpa mengeluarkan permintaan RNRSERVICE_DEREGISTER . Ketika layanan mendaftar, layanan harus menyimpan alamatnya. Pada panggilan berikutnya, layanan harus secara eksplisit membatalkan pendaftaran alamat lama ini sebelum mendaftarkan alamat baru.

Properti Layanan

Tabel berikut ini mencantumkan nama anggota WSAQUERYSET dan menjelaskan bagaimana data properti layanan diwakili. Anggota berlabel sebagai (Opsional) dapat disediakan dengan penunjuk null.
Nama anggota WSAQUERYSET Deskripsi properti layanan
**dwSize** Atur ke sizeof(WSAQUERYSET). Ini adalah mekanisme penerapan versi.
**lpszServiceInstanceName** String yang dirujuk berisi nama instans layanan.
**lpServiceClassId** GUID yang sesuai dengan kelas layanan ini.
**lpVersion** Pilihan. Menyediakan nomor versi instans layanan.
**lpszComment** Pilihan. String komentar opsional.
**dwNameSpace** Diabaikan untuk operasi ini.
**lpNSProviderId** Diabaikan untuk operasi ini. Pengidentifikasi penyedia terkandung dalam parameter lpProviderId .
**lpszContext** Pilihan. Titik awal kueri dalam namespace hierarkis.
**dwNumberOfProtocols** Diabaikan untuk operasi ini.
**lpafpProtocols** Diabaikan untuk operasi ini.
**pszQueryString** Diabaikan untuk operasi ini.
**dwNumberOfCsAddrs** Jumlah elemen dalam array struktur CSADDR_INFO yang dirujuk oleh lpcsaBuffer.
**lpcsaBuffer** Penunjuk ke array struktur CSADDR_INFO yang berisi alamat atau alamat yang didengarkan layanan.
**dwOutputFlags** Diabaikan untuk operasi ini.
**lpBlob** Pilihan. Arahkan ke entitas khusus penyedia.
 
**Catatan** Ini dapat diterima bagi anggota **iProtocol** dari struktur CSADDR_INFO untuk berisi konstanta manifes **IPROTOCOL_ANY**, menunjukkan nilai kartubebas. Penyedia namespace harus menggantikan nilai yang dapat diterima untuk keluarga alamat dan jenis soket yang diberikan.
 

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

Lihat juga

CSADDR_INFO

WSAQUERYSET

WSASetLastError