Condividi tramite


PNRP e WSALookupServiceBegin

PNRP usa la funzione WSALookupServiceBegin per avviare il processo che consente a un'applicazione di eseguire le operazioni seguenti:

I client che tentano di eseguire una delle funzioni usano le funzioni WSALookupServiceBegin, WSALookupServiceNext e WSALookupServiceEnd.

Usando WSANSPIoctl, il servizio di ricerca può essere usato in modo asincrono. Per informazioni sull'uso delle funzioni del servizio di ricerca in modo asincrono, vedere PNRP e WSANSPIoctl.

Il processo per l'uso dei nomi di peer è diverso dall'uso dei cloud. Ogni processo viene descritto separatamente in questo argomento.

Risoluzione di un nome

Un'applicazione usa WSALookupServiceBegin per ottenere l'indirizzo IP, la porta e il protocollo per un servizio peer registrato in un altro computer. La funzione WSALookupServiceBegin viene usata per avviare il processo di risoluzione dei nomi e configurare i parametri e le restrizioni. Viene restituito un handle e deve essere usato quando si chiama WSALookupServiceNext e WSANSPIoctl.

lpqsRestrictions

Quando si risolve un nome peer, la struttura LPWSAQUERYSET che i riferimenti ai parametri lpqsRestrictions devono contenere i valori seguenti:

dwSize

Specifica le dimensioni di questa struttura.

lpszServiceInstanceName

Specifica un nome peer da risolvere.

lpServiceClassID

Deve essere SVCID_PNRPNAME.

lpVersion

Riservato, deve essere NULL.

lpszComment

Riservato, deve essere NULL.

dwNameSpace

Deve essere NS_PNRPNAME o NS_ALL.

lpNSProviderID

Deve essere NS_PROVIDER_PNRPNAME o NULL.

lpszContext

Deve essere un nome cloud, una stringa vuota o NULL. Se questo valore è NULL o una stringa vuota, viene usato il cloud predefinito "Global_". In caso contrario, deve puntare a un nome cloud valido.

dwNumberOfProtocols

Riservato, deve essere zero (0).

lpszQueryString

Riservato, deve essere NULL.

dwNumberOfCsAddrs

Riservato, deve essere zero (0).

lpcsaBuffer

Riservato, deve essere NULL.

dwOutputFlags

Riservato, deve essere zero (0).

lpBlob

Deve essere un puntatore a una struttura BLOB o NULL. Se è NULL, vengono usati valori predefiniti. Se è impostato, lpBlob punta a una struttura PNRPINFO e i parametri specifici nella struttura PNRPINFO devono essere impostati. Per altre informazioni, vedere le descrizioni seguenti per la struttura PNRPINFO.

Struttura PNRPINFO

Se viene impostato il membro lpBlob della struttura LPWSAQUERYSET , è necessario impostare i membri seguenti della struttura PNRPINFO :

dwSize

Specifica le dimensioni di questa struttura.

lpwszIdentity

Riservato, deve essere NULL.

nMaxResolve

Specifica il numero richiesto di risoluzioni.

dwTimeout

Specifica il periodo di timeout richiesto per attendere le risposte. Il valore predefinito è 30 secondi. Il massimo è 600 secondi (10 minuti).

dwLifetime

Riservato, deve essere zero (0).

enResolveCriteria

Deve essere uno dei valori consentiti. Il valore predefinito è PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME. I valori validi vengono specificati da PNRP_RESOLVE_CRITERIA.

Dwflags

Deve essere zero (0) o PNRPINFO_HINT. Il valore predefinito è zero (0).

saHint

Specifica l'indirizzo IP per l'hint. L'hint viene usato quando si tenta di trovare il nome peer più vicino. Il formato dell'hint è un indirizzo IPv6. Se saHint non viene specificato quando si trova il nome peer più vicino, viene invece usato un indirizzo IPv6 del computer locale. Questo membro viene ignorato se dwFlags non è impostato.

enNameState

Riservato, deve essere zero (0).

dwControlFlags

I flag di LUP_RETURN_* seguenti sono supportati da PNRP:

Valore Descrizione
LUP_RETURN_NAME Restituisce un nome e un contesto.
LUP_RETURN_COMMENT Restituisce un commento associato a un nome.
LUP_RETURN_ADDR Restituisce un indirizzo associato a un nome.

 

Enumerazione cloud di rete

lpqsRestrictions

Durante l'enumerazione dei cloud, la struttura LPWSAQUERYSET a cui i riferimenti ai parametri lpqsRestrictions devono contenere i valori seguenti:

dwSize

Specifica le dimensioni di questa struttura.

lpszServiceInstanceName

Deve essere NULL.

lpServiceClassID

Deve essere SVCID_PNRPCLOUD.

lpVersion

Riservato, deve essere NULL.

lpszComment

Riservato, deve essere NULL.

dwNameSpace

Deve essere NS_PNRPCLOUD.

lpNSProviderID

Deve essere NS_PROVIDER_PNRPCLOUD o NULL.

lpszContext

Riservato, deve essere NULL.

dwNumberOfProtocols

Riservato, deve essere zero (0).

lpszQueryString

Riservato, deve essere NULL.

dwNumberOfCsAddrs

Riservato, deve essere zero (0).

lpcsaBuffer

Riservato, deve essere NULL.

dwOutputFlags

Riservato, deve essere zero (0).

lpBlob

Puntatore a una struttura BLOB che punta a una struttura PNRPCLOUDINFO . Se lpBlob è NULL, vengono enumerati tutti i cloud.

Struttura PNRPCLOUDINFO

Durante l'enumerazione dei cloud, è necessario impostare i membri seguenti della struttura PNRPCLOUDINFO :

dwSize

Specifica le dimensioni di questa struttura.

Cloud

Punta a una struttura che specifica i criteri che è possibile usare per filtrare i risultati della ricerca. Il membro Cloud.Scope può essere PNRP_SCOPE_ANY, PNRP_GLOBAL_SCOPE, PNRP_SITE_LOCAL_SCOPE o PNRP_LINK_LOCAL_SCOPE. Se viene specificato PNRP_SCOPE_ANY , vengono restituiti tutti i cloud. In caso contrario, vengono restituiti solo i cloud corrispondenti a Cloud.Scope .

enCloudState

Riservato, deve essere zero (0).

dwControlFlags

I flag di LUP_RETURN_* seguenti sono supportati da PNRP:

Valore Descrizione
LUP_RETURN_NAME Restituisce un nome e un contesto.
LUP_RETURN_BLOB Restituisce il BLOB associato a questo cloud.

 

PNRP e BLOB

PNRP e WSALookupServiceEnd

PNRP e WSALookupServiceNext

PNRP e WSANSPIoctl

PNRP e WSAQUERYSET

PNRPCLOUDINFO

PNRPINFO

Codici di errore PNRP NSP