Aracılığıyla paylaş


PNRP ve WSASetService

PNRP, eş adlarını kaydetmek veya kaldırmak için WSASetService işlevini kullanır.

Ad Kaydetme

Kayıt, bir hizmetle bağlantı kurulabilecek bir eş adı ve uç nokta kümesi içerir. Kayıt, PNRP buluta özgüdür. Bir eş kaydedildikten sonra, kayıt ile kayıt bilgilerinin diğer düğümlere yayılması arasında bir gecikme olur. Bu süre boyunca, diğer düğümler yeni kaydedilen eşleri çözemeyebilir.

Hizmet kaydı kalıcı değil.

  • Eş adı kaydeden bir istemci işlemi WSACleanupçıkar veya çağırırsa, eş adı kaydedilmez.
  • Belirtilen eş adı geçerli işlem tarafından aynı bulutta zaten kayıtlıysa, yeni kayıt değerleriyle değiştirilir.

Eş adı kaydederken aşağıdaki parametre değerleri belirtilmelidir:

  • essOperation parametresi RNRSERVICE_REGISTERdeğerine sahip olmalıdır.
  • dwControlFlags parametresi sıfır (0) olmalıdır.

Eş adı kaydederken, lpqsRegInfo parametresi tarafından başvuruda bulunılan LPWSAQUERYSET yapısı aşağıdaki değerleri içermelidir:

dwSize

Bu yapının boyutunu belirtir.

lpszServiceInstanceName

Kaydedilecek eş adını belirtir. eş adı güvenli değilse, kimlik isteğe bağlıdır. Kimlik NULLolarak belirtilirse, PNRP varsayılan olarak makine yerel kimliğini kullanır.

lpServiceClassID

SVCID_PNRPNAME olmalı.

lpVersion

Göz ardı. null olarak ayarlayın.

lpszComment

Göz ardı. Ancak dizenin, NULL sonlandırıcısı da dahil olmak üzere 40 karakterden daha az olması gerekir.

dwNameSpace

NS_PNRPNAME veya NS_ALLolmalıdır.

lpNSProviderID

null NS_PROVIDER_PNRPNAME veyaolmalıdır.

lpszContext

bir bulut adı, boş dize veya NULLolmalıdır. Bu değer NULL veya boş bir dize ise varsayılan bulut olan "Genel" kullanılır. Aksi takdirde geçerli bir bulut adına işaret etmelidir.

dwNumberOfProtocols

Göz ardı. Sıfır (0) olarak ayarlayın.

lpszQueryString

Göz ardı. null olarak ayarlayın.

dwNumberOfCsAddrs

Bir hizmet tarafından kaydedilen adres sayısını belirtir. Tek bir ad için kaydedilebilecek adres sayısı üst sınırı 10'dur.

lpcsaBuffer

Kaydedilecek adres listesinin işaretçisi.

dwOutputFlags

Göz ardı. Sıfır (0) olarak ayarlayın.

lpBlob

PNRPINFO yapısına işaret eden bir BLOB yapısının işaretçisi. PNRPINFO yapısındaki belirli parametreler ayarlanmalıdır. Daha fazla bilgi için aşağıdaki PNRPINFO yapısı bölümüne bakın.

PNRPINFO Yapısı

LPWSAQUERYSET yapısının lpBlob üyesi ayarlanırsa, PNRPINFO yapısının aşağıdaki üyeleri ayarlanmalıdır:

dwSize

Bu yapının boyutunu belirtir.

lpwszIdentity

PeerIdentityCreatekullanılarak oluşturulan eş adının kimliğini belirtir. Eş adı güvenli değilse, kimlik isteğe bağlıdır. Kimlik NULLolarak belirtilirse, PNRP varsayılan olarak bilgisayar yerel kimliğini kullanır.

nMaxResolve

Göz ardı. Sıfır (0) olarak ayarlayın.

dwTimeout

Göz ardı. Sıfır (0) olarak ayarlayın.

dwLifetime

Yenileme işlemleri arasındaki saniye sayısını belirtir.

enResolveCriteria

Göz ardı. Sıfır (0) olarak ayarlayın.

dwFlags

Sıfır (0) veya PNRPINFO_HINTolmalıdır. Varsayılan değer sıfırdır (0). Bu, PNRP Kimliğinin hizmet konumu bölümünün saHintiçindeki IP adresi kullanılarak oluşturulduğu anlamına gelir. Aksi takdirde hizmet konumu, lpcsaBuffer üyesinin ilk IPv6 girişindeki ilk IP adresi kullanılarak oluşturulur.

saHint

İpucu için IPv6 adresini belirtir.

enNameState

Göz ardı. Sıfır (0) olarak ayarlayın.

Eş Adının Kaydını Kaldırma

Aşağıdaki liste, eş adının kaydını kaldırmayla ilgili önemli bilgileri tanımlar.

  • Yalnızca eş adı kaydeden bir uygulama kaydı kaldırabilir.
  • WSACleanupçağrıldığında eş adının kaydı otomatik olarak kaldırılır.
  • PNRP her zaman hizmet adı kaydının tamamını kaldırır. Tek tek adreslerin kaldırılmasına izin vermez.
  • Bir adın kaydı kaldırıldığında, essOperation parametresi RNRSERVICE_DELETEdeğerine sahip olmalıdır.
  • PNRP, RNRSERVICE_DEREGISTERdeğerini desteklemez.
  • dwControlFlags parametresi sıfır (0) olmalıdır.

Bir adın kaydı kaldırıldığında, lpqsRegInfo parametre başvurularının aşağıdaki değerleri içermesi gereken LPWSAQUERYSET yapısı:

dwSize

Bu yapının boyutunu belirtir.

lpszServiceInstanceName

Kaydı kaldıracak bir eş adı belirtir.

lpServiceClassID

SVCID_PNRPNAMEolmalıdır.

lpVersion

Göz ardı. null olarak ayarlayın.

lpszComment

Göz ardı. null olarak ayarlayın.

dwNameSpace

NS_PNRPNAME veya NS_ALLolmalıdır.

lpNSProviderID

null NS_PROVIDER_PNRPNAME veyaolmalıdır.

lpszContext

bir bulut adı, boş dize veya NULLolmalıdır. Bu değer NULL veya boş bir dize ise varsayılan bulut olan "Genel" kullanılır. Aksi takdirde geçerli bir bulut adına işaret etmelidir.

dwNumberOfProtocols

Göz ardı. Sıfır (0) olarak ayarlayın.

lpszQueryString

Göz ardı. null olarak ayarlayın.

dwNumberOfCsAddrs

Göz ardı. null olarak ayarlayın.

lpcsaBuffer

Göz ardı. null olarak ayarlayın.

dwOutputFlags

Göz ardı. Sıfır (0) olarak ayarlayın.

lpBlob

PNRPINFO yapısına işaret eden bir BLOB yapısının işaretçisi. lpBlob yapısının lpszIdentity üyesi, eş adı kaydetmek için kullanılan kimliğin adını tanımlar. Kalan üyeler, bir ad kaydedilirken kullanılan değerlerle aynı değerlere ayarlanmalıdır.

PNRP ve BLOB

PNRP ve WSAQUERYSET

PNRPINFO

PNRP NSP Hata Kodları

WSACleanup

WSASetService