Udostępnij za pośrednictwem


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ą.

 

PNRP i BLOB

PNRP i WSALookupServiceEnd

PNRP i WSALookupServiceNext

PNRP i WSANSPIoctl

PNRP i WSAQUERYSET

PNRPCLOUDINFO

PNRPINFO

kody błędów dostawcy NSP pnRP