Partager via


PNRP et WSASetService

PNRP utilise la fonctionWSASetServicepour inscrire ou supprimer des noms d’homologues .

Inscription d’un nom

L’inscription inclut un nom d’homologue et un ensemble de points de terminaison où un service peut être contacté. Une inscription est spécifique à un cloud PNRP. Une fois qu’un homologue est inscrit, il existe un délai entre l’inscription et la propagation des informations d’inscription vers d’autres nœuds. Pendant ce temps, d’autres nœuds peuvent ne pas être en mesure de résoudre un homologue nouvellement inscrit.

L’inscription de service n’est pas persistante.

  • Si un processus client qui inscrit un nom d’homologue quitte ou appelle WSACleanup, le nom d’homologue n’est pas inscrit.
  • Si un nom d’homologue spécifié est déjà inscrit dans le même cloud par le processus actuel, il est remplacé par de nouvelles valeurs d’inscription.

Lors de l’inscription d’un nom d’homologue, les valeurs de paramètre suivantes doivent être indiquées :

  • paramètre essOperation doit avoir une valeur de RNRSERVICE_REGISTER.
  • paramètre dwControlFlags doit être égal à zéro (0).

Lors de l’inscription d’un nom d’homologue, la structureLPWSAQUERYSET référencée par le paramètre lpqsRegInfo doit contenir les valeurs suivantes :

dwSize

Spécifie la taille de cette structure.

lpszServiceInstanceName

Spécifie un nom d’homologue à inscrire. Si le nom d’homologue n’est pas sécurisé, l’identité est facultative. Si l’identité est spécifiée comme NULL, PNRP utilise l’identité locale de l’ordinateur par défaut.

lpServiceClassID

Doit être SVCID_PNRPNAME.

lpVersion

Ignoré. Défini sur NULL .

lpszComment

Ignoré. Toutefois, la chaîne doit toujours comporter moins de 40 caractères, y compris la NULL terminateur.

dwNameSpace

Doit être NS_PNRPNAME ou NS_ALL.

lpNSProviderID

Doit être NS_PROVIDER_PNRPNAME ou NULL .

lpszContext

Doit être un nom de cloud, une chaîne vide ou NULL. Si cette valeur est null ou une chaîne vide, le cloud par défaut, « Global », est utilisé. Sinon, il doit pointer vers un nom de cloud valide.

dwNumberOfProtocols

Ignoré. Défini sur zéro (0).

lpszQueryString

Ignoré. Défini sur NULL .

dwNumberOfCsAddrs

Spécifie le nombre d’adresses inscrites par un service. Le nombre maximal d’adresses pouvant être inscrites pour un nom unique est de 10.

lpcsaBuffer

Pointeur vers une liste d’adresses à inscrire.

dwOutputFlags

Ignoré. Défini sur zéro (0).

lpBlob

Pointeur vers une structureBLOBpointant vers une structure PNRPINFO. Des paramètres spécifiques dans la structure PNRPINFO doivent être définis. Pour plus d’informations, consultez la section de structure PNRPINFO suivante.

PNRPINFO Structure

Si le membre lpBlob de la structure LPWSAQUERYSET est définie, les membres suivants de la structure PNRPINFO doivent être définis :

dwSize

Spécifie la taille de cette structure.

lpwszIdentity

Spécifie l’identité du nom d’homologue créé à l’aide de PeerIdentityCreate. Si un nom d’homologue n’est pas sécurisé, l’identité est facultative. Si l’identité est spécifiée comme NULL, PNRP utilise l’identité locale de l’ordinateur par défaut.

nMaxResolve

Ignoré. Défini sur zéro (0).

dwTimeout

Ignoré. Défini sur zéro (0).

dwLifetime

Spécifie le nombre de secondes entre les opérations d’actualisation.

enResolveCriteria

Ignoré. Défini sur zéro (0).

dwFlags

Doit être zéro (0) ou PNRPINFO_HINT. La valeur par défaut est zéro (0). Cela signifie que la partie emplacement du service de l’ID PNRP est générée à l’aide de l’adresse IP dans saHint. Sinon, l’emplacement du service est généré à l’aide de la première adresse IP dans la première entrée IPv6 du lpcsaBuffer membre.

saHint

Spécifie l’adresse IPv6 de l’indicateur.

enNameState

Ignoré. Défini sur zéro (0).

Désinscrire un nom d’homologue

La liste suivante identifie les informations importantes sur la désinscription d’un nom d’homologue.

  • Seule une application qui inscrit un nom d’homologue peut l’annuler.
  • Un nom d’homologue n’est pas inscrit automatiquement si WSACleanup est appelé.
  • PNRP supprime toujours l’inscription complète du nom du service. Elle n’autorise pas la suppression d’adresses individuelles.
  • Lors de l’annulation de l’inscription d’un nom, le paramètre essOperation doit avoir la valeur RNRSERVICE_DELETE.
  • PNRP ne prend pas en charge la valeur RNRSERVICE_DEREGISTER.
  • Le paramètre dwControlFlags doit être égal à zéro (0).

Lors de l’annulation de l’inscription d’un nom, la structure LPWSAQUERYSET que les références de paramètres lpqsRegInfo doivent contenir les valeurs suivantes :

dwSize

Spécifie la taille de cette structure.

lpszServiceInstanceName

Spécifie un nom d’homologue à annuler l’inscription.

lpServiceClassID

Doit être SVCID_PNRPNAME.

lpVersion

Ignoré. Défini sur NULL .

lpszComment

Ignoré. Défini sur NULL .

dwNameSpace

Doit être NS_PNRPNAME ou NS_ALL.

lpNSProviderID

Doit être NS_PROVIDER_PNRPNAME ou NULL .

lpszContext

Doit être un nom de cloud, une chaîne vide ou NULL. Si cette valeur est NULL ou une chaîne vide, le cloud par défaut « Global » est utilisé. Sinon, il doit pointer vers un nom de cloud valide.

dwNumberOfProtocols

Ignoré. Défini sur zéro (0).

lpszQueryString

Ignoré. Défini sur NULL .

dwNumberOfCsAddrs

Ignoré. Défini sur NULL .

lpcsaBuffer

Ignoré. Défini sur NULL .

dwOutputFlags

Ignoré. Défini sur zéro (0).

lpBlob

Pointeur vers une structureBLOBpointant vers une structure PNRPINFO. L'lpszIdentity membre de la structure lpBlob identifie le nom de l’identité utilisée pour inscrire un nom d’homologue. Les membres restants doivent être définis sur les mêmes valeurs que celles utilisées lors de l’inscription d’un nom.

PNRP et le BLOB

PNRP et WSAQUERYSET

PNRPINFO

codes d’erreur NSP PNRP

WSACleanup

WSASetService