Bagikan melalui


PNRP dan WSASetService

PNRP menggunakan fungsi WSASetService untuk mendaftarkan atau menghapus nama serekan.

Mendaftarkan Nama

Pendaftaran mencakup nama serekan dan set titik akhir tempat layanan dapat dihubungi. Pendaftaran khusus untuk cloud PNRP. Setelah serekan terdaftar, ada keterlambatan antara pendaftaran dan penyebaran informasi pendaftaran ke simpul lain. Selama waktu ini, simpul lain mungkin tidak dapat menyelesaikan rekan yang baru terdaftar.

Pendaftaran layanan tidak persisten.

  • Jika proses klien yang mendaftarkan nama serekan keluar atau memanggil WSACleanup, maka nama serekan tidak terdaftar.
  • Jika nama serekan tertentu sudah terdaftar di cloud yang sama oleh proses saat ini, nama tersebut diganti dengan nilai pendaftaran baru.

Saat mendaftarkan nama serekan, nilai parameter berikut harus ditunjukkan:

  • parameter essOperation harus memiliki nilai RNRSERVICE_REGISTER.
  • Parameter dwControlFlags harus nol (0).

Saat mendaftarkan nama serekan, struktur LPWSAQUERYSET yang direferensikan oleh parameter lpqsRegInfo harus berisi nilai berikut:

dwSize

Menentukan ukuran struktur ini.

lpszServiceInstanceName

Menentukan nama serekan yang akan didaftarkan. Jika nama serekan tidak aman, maka identitas bersifat opsional. Jika identitas ditentukan sebagai NULL, PNRP menggunakan identitas lokal komputer—secara default.

lpServiceClassID

Harus SVCID_PNRPNAME.

lpVersion

Diabaikan. Atur ke NULL.

lpszComment

Diabaikan. Namun, string masih diperlukan kurang dari 40 karakter, termasuk terminator NULL .

dwNameSpace

Harus NS_PNRPNAME atau NS_ALL.

lpNSProviderID

Harus berupa NS_PROVIDER_PNRPNAME atau NULL.

lpszContext

Harus berupa nama cloud, string kosong, atau NULL. Jika nilai ini adalah NULL atau string kosong, cloud default, "Global", digunakan. Jika tidak, nama cloud harus menunjuk ke nama cloud yang valid.

dwNumberOfProtocols

Diabaikan. Atur ke nol (0).

lpszQueryString

Diabaikan. Atur ke NULL.

dwNumberOfCsAddrs

Menentukan jumlah alamat yang didaftarkan oleh layanan. Jumlah maksimum alamat yang dapat didaftarkan untuk satu nama adalah 10.

lpcsaBuffer

Arahkan ke daftar alamat untuk mendaftar.

dwOutputFlags

Diabaikan. Atur ke nol (0).

lpBlob

Penunjuk ke struktur BLOB yang menunjuk ke struktur PNRPINFO . Parameter tertentu dalam struktur PNRPINFO harus diatur. Untuk informasi selengkapnya, lihat bagian struktur PNRPINFO berikut ini.

Struktur PNRPINFO

Jika anggota lpBlob dari struktur LPWSAQUERYSET ditetapkan, anggota struktur PNRPINFO berikut harus ditetapkan:

dwSize

Menentukan ukuran struktur ini.

lpwszIdentity

Menentukan identitas nama serekan yang dibuat dengan menggunakan PeerIdentityCreate. Jika nama serekan tidak aman, maka identitas bersifat opsional. Jika identitas ditentukan sebagai NULL, PNRP menggunakan identitas lokal komputer—secara default.

nMaxResolve

Diabaikan. Atur ke nol (0).

dwTimeout

Diabaikan. Atur ke nol (0).

dwLifetime

Menentukan jumlah detik antara operasi refresh.

enResolveCriteria

Diabaikan. Atur ke nol (0).

dwFlags

Harus nol (0) atau PNRPINFO_HINT. Defaultnya adalah nol (0). Ini berarti bahwa bagian lokasi layanan dari ID PNRP dibangun dengan menggunakan alamat IP di saHint. Jika tidak, lokasi layanan dibangun dengan menggunakan alamat IP pertama dalam entri IPv6 pertama dari anggota lpcsaBuffer .

saHint

Menentukan alamat IPv6 untuk petunjuk.

enNameState

Diabaikan. Atur ke nol (0).

Membatalkan pendaftaran Nama Serekan

Daftar berikut mengidentifikasi informasi penting tentang membatalkan pendaftaran nama serekan.

  • Hanya aplikasi yang mendaftarkan nama serekan yang dapat membatalkan pendaftarannya.
  • Nama serekan tidak terdaftar secara otomatis jika WSACleanup dipanggil.
  • PNRP selalu menghapus seluruh pendaftaran nama layanan. Ini tidak memungkinkan penghapusan alamat individual.
  • Saat membatalkan pendaftaran nama, parameter essOperation harus memiliki nilai RNRSERVICE_DELETE.
  • PNRP tidak mendukung nilai RNRSERVICE_DEREGISTER.
  • Parameter dwControlFlags harus nol (0).

Saat membatalkan pendaftaran nama, struktur LPWSAQUERYSET yang direferensikan parameter lpqsRegInfo harus berisi nilai berikut:

dwSize

Menentukan ukuran struktur ini.

lpszServiceInstanceName

Menentukan nama serekan untuk membatalkan pendaftaran.

lpServiceClassID

Pasti SVCID_PNRPNAME.

lpVersion

Diabaikan. Atur ke NULL.

lpszComment

Diabaikan. Atur ke NULL.

dwNameSpace

Harus NS_PNRPNAME atau NS_ALL.

lpNSProviderID

Harus NS_PROVIDER_PNRPNAME atau NULL.

lpszContext

Harus berupa nama cloud, string kosong, atau NULL. Jika nilai ini NULL atau string kosong, cloud default, "Global" digunakan. Jika tidak, itu harus menunjuk ke nama cloud yang valid.

dwNumberOfProtocols

Diabaikan. Atur ke nol (0).

lpszQueryString

Diabaikan. Atur ke NULL.

dwNumberOfCsAddrs

Diabaikan. Atur ke NULL.

lpcsaBuffer

Diabaikan. Atur ke NULL.

dwOutputFlags

Diabaikan. Atur ke nol (0).

lpBlob

Pointer ke struktur BLOB yang menunjuk ke struktur PNRPINFO . Anggota lpszIdentity dari struktur lpBlob mengidentifikasi nama identitas yang digunakan untuk mendaftarkan nama serekan. Anggota yang tersisa harus diatur ke nilai yang sama yang digunakan saat mendaftarkan nama.

PNRP dan BLOB

PNRP dan WSAQUERYSET

PNRPINFO

Kode Kesalahan PNRP NSP

WSACleanup

WSASetService