PNRP e WSASetService
PNRP usa la funzione WSASetService per registrare o rimuovere nomi peer.
Registrazione di un nome
La registrazione include un nome peer e un set di endpoint in cui è possibile contattare un servizio. Una registrazione è specifica per un cloud PNRP. Dopo la registrazione di un peer, esiste un ritardo tra la registrazione e la propagazione delle informazioni di registrazione ad altri nodi. Durante questo periodo, altri nodi potrebbero non essere in grado di risolvere un peer appena registrato.
La registrazione del servizio non è persistente.
- Se un processo client che registra un nome peer viene chiuso o chiama WSACleanup, il nome del peer viene annullato.
- Se un nome peer specificato è già registrato nello stesso cloud dal processo corrente, viene sostituito con nuovi valori di registrazione.
Quando si registra un nome peer, i valori dei parametri seguenti devono essere indicati:
- Il parametro essOperation deve avere un valore di RNRSERVICE_REGISTER.
- il parametro dwControlFlags deve essere zero (0).
Quando si registra un nome peer, la struttura LPWSAQUERYSET a cui fa riferimento il parametro lpqsRegInfo deve contenere i valori seguenti:
-
dwSize
-
Specifica le dimensioni di questa struttura.
-
lpszServiceInstanceName
-
Specifica un nome peer da registrare. Se il nome del peer non è protetto, l'identità è facoltativa. Se l'identità viene specificata come NULL, PNRP usa l'identità locale del computer, per impostazione predefinita.
-
lpServiceClassID
-
Deve essere SVCID_PNRPNAME.
-
lpVersion
-
Ignorato. Impostare su NULL.
-
lpszComment
-
Ignorato. Tuttavia, la stringa deve comunque essere inferiore a 40 caratteri, incluso il terminatore 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
-
Ignorato. Impostare su zero (0).
-
lpszQueryString
-
Ignorato. Impostare su NULL.
-
dwNumberOfCsAddrs
-
Specifica il numero di indirizzi registrati da un servizio. Il numero massimo di indirizzi che possono essere registrati per un singolo nome è 10.
-
lpcsaBuffer
-
Puntatore a un elenco di indirizzi da registrare.
-
dwOutputFlags
-
Ignorato. Impostare su zero (0).
-
lpBlob
-
Puntatore a una struttura BLOB che punta a una struttura PNRPINFO . È necessario impostare parametri specifici nella struttura PNRPINFO . Per altre informazioni, vedere la sezione seguente della 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
-
Specifica l'identità del nome peer creato tramite PeerIdentityCreate. Se un nome peer non è protetto, l'identità è facoltativa. Se l'identità viene specificata come NULL, PNRP usa l'identità locale del computer, per impostazione predefinita.
-
nMaxResolve
-
Ignorato. Impostare su zero (0).
-
dwTimeout
-
Ignorato. Impostare su zero (0).
-
dwLifetime
-
Specifica il numero di secondi tra le operazioni di aggiornamento.
-
enResolveCriteria
-
Ignorato. Impostare su zero (0).
-
Dwflags
-
Deve essere zero (0) o PNRPINFO_HINT. Il valore predefinito è zero (0). Ciò significa che la parte del percorso del servizio dell'ID PNRP viene compilata usando l'indirizzo IP in saHint. In caso contrario, il percorso del servizio viene compilato usando il primo indirizzo IP nella prima voce IPv6 del membro lpcsaBuffer .
-
saHint
-
Specifica l'indirizzo IPv6 per l'hint.
-
enNameState
-
Ignorato. Impostare su zero (0).
Annullare la registrazione di un nome peer
L'elenco seguente identifica le informazioni importanti relative all'annullamento della registrazione di un nome peer.
- Solo un'applicazione che registra un nome peer può annullare la registrazione.
- Un nome peer viene annullato automaticamente se viene chiamato WSACleanup .
- PNRP rimuove sempre l'intera registrazione del nome del servizio. Non consente la rimozione di singoli indirizzi.
- Quando si annulla la registrazione di un nome, il parametro essOperation deve avere un valore di RNRSERVICE_DELETE.
- PNRP non supporta il valore RNRSERVICE_DEREGISTER.
- Il parametro dwControlFlags deve essere zero (0).
Quando si annulla la registrazione di un nome, la struttura LPWSAQUERYSET a cui fa riferimento il parametro lpqsRegInfo deve contenere i valori seguenti:
-
dwSize
-
Specifica le dimensioni di questa struttura.
-
lpszServiceInstanceName
-
Specifica un nome peer per annullare la registrazione.
-
lpServiceClassID
-
Deve essere SVCID_PNRPNAME.
-
lpVersion
-
Ignorato. Impostare su NULL.
-
lpszComment
-
Ignorato. Impostare su 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
-
Ignorato. Impostare su zero (0).
-
lpszQueryString
-
Ignorato. Impostare su NULL.
-
dwNumberOfCsAddrs
-
Ignorato. Impostare su NULL.
-
lpcsaBuffer
-
Ignorato. Impostare su NULL.
-
dwOutputFlags
-
Ignorato. Impostare su zero (0).
-
lpBlob
-
Puntatore a una struttura BLOB che punta a una struttura PNRPINFO . Il membro lpszIdentity della struttura lpBlob identifica il nome dell'identità utilizzata per registrare un nome peer. I membri rimanenti devono essere impostati sullo stesso valore usato durante la registrazione di un nome.
Argomenti correlati
-
WSASetService