PNRP i WSALookupServiceBegin
Protokół PNRP używa funkcji WSALookupServiceBegin, aby uruchomić proces, który umożliwia aplikacji wykonanie następujących czynności:
Klienci, którzy próbują wykonać jedną z funkcji, używają funkcji WSALookupServiceBegin, WSALookupServiceNexti funkcji WSALookupServiceEnd.
Korzystając z WSANSPIoctl, można użyć asynchronicznej usługi wyszukiwania. Aby uzyskać informacje na temat asynchronicznego używania funkcji usługi wyszukiwania, zobacz PNRP i WSANSPIoctl.
Proces pracy z nazwami równorzędnymi różni się od pracy z chmurami. Każdy proces jest opisany oddzielnie w tym temacie.
Rozpoznawanie nazwy
Aplikacja używa WSALookupServiceBegin w celu uzyskania adresu IP, portu i protokołu dla usługi równorzędnej zarejestrowanej na innym komputerze. Funkcja WSALookupServiceBegin służy do uruchamiania procesu rozpoznawania nazw i konfigurowania parametrów i ograniczeń. Zwracana jest obsługa i musi być używana podczas wywoływania WSALookupServiceNext i WSANSPIoctl.
lpqsRestrictions
Podczas rozpoznawania nazwy elementu równorzędnego struktura LPWSAQUERYSET, że lpqsRestrictions odwołania do parametrów muszą zawierać następujące wartości:
-
dwSize
-
Określa rozmiar tej struktury.
-
lpszServiceInstanceName
-
Określa nazwę elementu równorzędnego do rozpoznania.
-
lpServiceClassID
-
Musi być SVCID_PNRPNAME.
-
lpVersion
-
Zarezerwowane musi mieć wartość null.
-
lpszComment
-
Zarezerwowane musi mieć wartość null.
-
dwNameSpace
-
Musi być NS_PNRPNAME lub NS_ALL.
-
lpNSProviderID
-
Musi mieć wartość NS_PROVIDER_PNRPNAME lub null.
-
lpszContext
-
Musi być nazwą chmury, pustym ciągiem lub wartością NULL . Jeśli ta wartość ma wartość null lub pusty ciąg, zostanie użyta domyślna chmura "Global_". W przeciwnym razie musi wskazywać prawidłową nazwę chmury.
-
dwNumberOfProtocols
-
Zarezerwowane musi mieć wartość zero (0).
-
lpszQueryString
-
Zarezerwowane musi mieć wartość null.
-
dwNumberOfCsAddrs
-
Zarezerwowane musi mieć wartość zero (0).
-
lpcsaBuffer
-
Zarezerwowane musi mieć wartość null.
-
dwOutputFlags
-
Zarezerwowane musi mieć wartość zero (0).
-
lpBlob
-
Musi być wskaźnikiem do strukturyobiektów blOBlub null. Jeśli jest null, są używane wartości domyślne. Jeśli jest ustawiona, lpBlob wskazuje strukturę PNRPINFO i określone parametry w strukturze PNRPINFO należy ustawić. Aby uzyskać więcej informacji, zobacz następujące opisy struktury PNRPINFO.
STRUKTURA PNRPINFO
Jeśli zostanie ustawiona strukturalpBlobLPWSAQUERYSET, należy ustawić następujące elementy członkowskie struktury PNRPINFO:
-
dwSize
-
Określa rozmiar tej struktury.
-
lpwszIdentity
-
Zarezerwowane musi mieć wartość null.
-
nMaxResolve
-
Określa żądaną liczbę rozwiązań.
-
dwTimeout
-
Określa żądany okres limitu czasu oczekiwania na odpowiedzi. Wartość domyślna to 30 sekund. Maksymalna wartość to 600 sekund (10 minut).
-
dwLifetime
-
Zarezerwowane musi mieć wartość zero (0).
-
enResolveCriteria
-
Musi być jedną z dozwolonych wartości. Wartość domyślna to PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME. Prawidłowe wartości są określane przez PNRP_RESOLVE_CRITERIA.
-
dwFlags
-
Musi mieć wartość zero (0) lub PNRPINFO_HINT. Wartość domyślna to zero (0).
-
saHint
-
Określa adres IP wskazówki. Wskazówka jest używana podczas próby znalezienia najbliższej nazwy elementu równorzędnego. Format wskazówki to adres IPv6. Jeśli saHint nie zostanie określona podczas znajdowania najbliższej nazwy elementu równorzędnego, używany jest adres IPv6 komputera lokalnego. Ten element członkowski jest ignorowany, jeśli nie ustawiono dwFlags.
-
enNameState
-
Zarezerwowane musi mieć wartość zero (0).
dwControlFlags
Następujące flagi LUP_RETURN_* są obsługiwane przez protokół PNRP:
Wartość | Opis |
---|---|
LUP_RETURN_NAME | Zwraca nazwę i kontekst. |
LUP_RETURN_COMMENT | Zwraca komentarz skojarzony z nazwą. |
LUP_RETURN_ADDR | Zwraca adres skojarzony z nazwą. |
Wyliczanie chmur sieciowych
lpqsRestrictions
Podczas wyliczania chmur LPWSAQUERYSET struktury lpqsRestrictions odwołania do parametrów muszą zawierać następujące wartości:
-
dwSize
-
Określa rozmiar tej struktury.
-
lpszServiceInstanceName
-
Musi mieć wartość null.
-
lpServiceClassID
-
Musi być SVCID_PNRPCLOUD.
-
lpVersion
-
Zarezerwowane musi mieć wartość null.
-
lpszComment
-
Zarezerwowane musi mieć wartość null.
-
dwNameSpace
-
Musi być NS_PNRPCLOUD.
-
lpNSProviderID
-
Musi mieć wartość NS_PROVIDER_PNRPCLOUD lub null.
-
lpszContext
-
Zarezerwowane musi mieć wartość null.
-
dwNumberOfProtocols
-
Zarezerwowane musi mieć wartość zero (0).
-
lpszQueryString
-
Zarezerwowane musi mieć wartość null.
-
dwNumberOfCsAddrs
-
Zarezerwowane musi mieć wartość zero (0).
-
lpcsaBuffer
-
Zarezerwowane musi mieć wartość null.
-
dwOutputFlags
-
Zarezerwowane musi mieć wartość zero (0).
-
lpBlob
-
Wskaźnik do strukturyobiektów blob, która wskazuje strukturę PNRPCLOUDINFO. Jeśli lpBlob jest null, wszystkie chmury są wyliczane.
STRUKTURA PNRPCLOUDINFO
Podczas wyliczania chmur należy ustawić następujące elementy członkowskie struktury PNRPCLOUDINFO:
-
dwSize
-
Określa rozmiar tej struktury.
-
Cloud
-
Wskazuje strukturę określającą kryteria, których można użyć do filtrowania wyników wyszukiwania. Element członkowski Cloud.Scope może być PNRP_SCOPE_ANY, PNRP_GLOBAL_SCOPE, PNRP_SITE_LOCAL_SCOPElub PNRP_LINK_LOCAL_SCOPE. Jeśli PNRP_SCOPE_ANY zostanie określona, zostaną zwrócone wszystkie chmury. W przeciwnym razie zwracane są tylko chmury zgodne z Cloud.Scope.
-
enCloudState
-
Zarezerwowane musi mieć wartość zero (0).
dwControlFlags
Następujące flagi LUP_RETURN_* są obsługiwane przez protokół PNRP:
Wartość | Opis |
---|---|
LUP_RETURN_NAME | Zwraca nazwę i kontekst. |
LUP_RETURN_BLOB | Zwraca obiektów blob skojarzonych z tą chmurą. |
Tematy pokrewne