Condividi tramite


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.

PNRP e BLOB

PNRP e WSAQUERYSET

PNRPINFO

Codici di errore PNRP NSP

WSACleanup

WSASetService