PNRP ve WSALookupServiceBegin
PNRP, bir uygulamanın aşağıdakileri yapmasına izin veren işlemi başlatmak için WSALookupServiceBegin işlevini kullanır:
- bir adı çözümlemeyi
- Ağ bulutlarını numaralandırma
İşlevlerden birini gerçekleştirmeye çalışan istemciler WSALookupServiceBegin, WSALookupServiceNextve WSALookupServiceEnd işlevlerinikullanır.
WSANSPIoctl kullanılarak arama hizmeti zaman uyumsuz olarak kullanılabilir. Arama hizmeti işlevlerini zaman uyumsuz olarak kullanma hakkında bilgi için bkz. PNRP ve WSANSPIoctl .
Eş adlarla çalışma süreci bulutlarla çalışmaktan farklıdır. Her işlem bu konu başlığında ayrı olarak açıklanmıştır.
Bir Adı Çözümleme
Bir uygulama, başka bir bilgisayarda kayıtlı bir eş hizmetin IP adresini, bağlantı noktasını ve protokollerini almak için WSALookupServiceBegin kullanır. WSALookupServiceBegin işlevi, ad çözümleme işlemini başlatmak ve parametreleri ve kısıtlamaları ayarlamak için kullanılır. Bir tanıtıcı döndürülür ve WSALookupServiceNext ve WSANSPIoctlçağrılırken kullanılmalıdır.
lpqsRestrictions
Bir eş adı çözümlendiğinde, lpqsRestrictions parametre başvurularının içerdiği LPWSAQUERYSET yapısı aşağıdaki değerleri içermelidir:
-
dwSize
-
Bu yapının boyutunu belirtir.
-
lpszServiceInstanceName
-
Çözümlenmesi gereken bir eş adı belirtir.
-
lpServiceClassID
-
SVCID_PNRPNAMEolmalıdır.
-
lpVersion
-
Ayrılmış, null olmalıdır.
-
lpszComment
-
Ayrılmış, null olmalıdır.
-
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 "Global_" kullanılır. Aksi takdirde geçerli bir bulut adına işaret etmelidir.
-
dwNumberOfProtocols
-
Ayrılmış, sıfır (0) olmalıdır.
-
lpszQueryString
-
Ayrılmış, null olmalıdır.
-
dwNumberOfCsAddrs
-
Ayrılmış, sıfır (0) olmalıdır.
-
lpcsaBuffer
-
Ayrılmış, null olmalıdır.
-
dwOutputFlags
-
Ayrılmış, sıfır (0) olmalıdır.
-
lpBlob
-
BLOB yapısının işaretçisi veya NULL olmalıdır. NULL ise varsayılan değerler kullanılır. Ayarlanırsa lpBlobPNRPINFO yapısına işaret eder ve PNRPINFO yapısındaki belirli parametreler ayarlanmalıdır. Daha fazla bilgi için PNRPINFO Yapısı için aşağıdaki açıklamalara 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
-
Ayrılmış, null olmalıdır.
-
nMaxResolve
-
İstenen çözüm sayısını belirtir.
-
dwTimeout
-
Yanıtları beklemek için istenen zaman aşımı süresini belirtir. Varsayılan değer 30 saniyedir. Maksimum değer 600 saniyedir (10 dakika).
-
dwLifetime
-
Ayrılmış, sıfır (0) olmalıdır.
-
enResolveCriteria
-
İzin verilen değerlerden biri olmalıdır. Varsayılan değer PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME. Geçerli değerler PNRP_RESOLVE_CRITERIAtarafından belirtilir.
-
dwFlags
-
Sıfır (0) veya PNRPINFO_HINTolmalıdır. Varsayılan değer sıfırdır (0).
-
saHint
-
İpucunun IP adresini belirtir. İpucu, en yakın eş adı bulmaya çalışırken kullanılır. İpucunun biçimi bir IPv6 adresidir. En yakın eş adı bulunurken saHint belirtilmezse, bunun yerine yerel bilgisayarın IPv6 adresi kullanılır. dwFlags ayarlanmadıysa bu üye yoksayılır.
-
enNameState
-
Ayrılmış, sıfır (0) olmalıdır.
dwControlFlags
Aşağıdaki LUP_RETURN_* bayrakları PNRP tarafından desteklenir:
Değer | Açıklama |
---|---|
LUP_RETURN_NAME | Bir ad ve bağlam döndürür. |
LUP_RETURN_COMMENT | Adla ilişkilendirilmiş bir açıklama döndürür. |
LUP_RETURN_ADDR | Adla ilişkilendirilmiş bir adres döndürür. |
Ağ Bulutlarını Numaralandırma
lpqsRestrictions
Bulutları numaralandırırken, lpqsRestrictions parametre başvurularının aşağıdaki değerleri içermesi gereken LPWSAQUERYSET yapısı:
-
dwSize
-
Bu yapının boyutunu belirtir.
-
lpszServiceInstanceName
-
null olmalıdır.
-
lpServiceClassID
-
SVCID_PNRPCLOUDolmalıdır.
-
lpVersion
-
Ayrılmış, null olmalıdır.
-
lpszComment
-
Ayrılmış, null olmalıdır.
-
dwNameSpace
-
NS_PNRPCLOUDolmalıdır.
-
lpNSProviderID
-
null NS_PROVIDER_PNRPCLOUD veyaolmalıdır.
-
lpszContext
-
Ayrılmış, null olmalıdır.
-
dwNumberOfProtocols
-
Ayrılmış, sıfır (0) olmalıdır.
-
lpszQueryString
-
Ayrılmış, null olmalıdır.
-
dwNumberOfCsAddrs
-
Ayrılmış, sıfır (0) olmalıdır.
-
lpcsaBuffer
-
Ayrılmış, null olmalıdır.
-
dwOutputFlags
-
Ayrılmış, sıfır (0) olmalıdır.
-
lpBlob
-
PNRPCLOUDINFO yapısına işaret eden bir BLOB yapısının işaretçisi. lpBlob null ise, tüm bulutlar numaralandırılır.
PNRPCLOUDINFO Yapısı
Bulutları numaralandırırken, PNRPCLOUDINFO yapısının aşağıdaki üyeleri ayarlanmalıdır:
-
dwSize
-
Bu yapının boyutunu belirtir.
-
Cloud
-
Arama sonuçlarını filtrelemek için kullanabileceğiniz ölçütleri belirten bir yapıya işaret eder. Cloud.Scope üyesi PNRP_SCOPE_ANY, PNRP_GLOBAL_SCOPE, PNRP_SITE_LOCAL_SCOPEveya PNRP_LINK_LOCAL_SCOPEolabilir. PNRP_SCOPE_ANY belirtilirse tüm bulutlar döndürülür. Aksi takdirde, yalnızca Cloud.Scope eşleşen bulutlar döndürülür.
-
enCloudState
-
Ayrılmış, sıfır (0) olmalıdır.
dwControlFlags
Aşağıdaki LUP_RETURN_* bayrakları PNRP tarafından desteklenir:
Değer | Açıklama |
---|---|
LUP_RETURN_NAME | Bir ad ve bağlam döndürür. |
LUP_RETURN_BLOB | Bu bulutla ilişkili BLOB döndürür. |
İlgili konular