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.
İlgili konular