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. |
Argomenti correlati