Partager via


PNRP et WSASetService

PNRP utilise la fonction WSASetService pour 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 à 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 du service n’est pas persistante.

  • Si un processus client qui inscrit un nom d’homologue quitte ou appelle WSACleanup, le nom de l’homologue n’est pas inscrit.
  • Si un nom d’homologue spécifié est déjà inscrit dans le même cloud par le processus en cours, 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 :

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

Lors de l’inscription d’un nom d’homologue, la structure LPWSAQUERYSET 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 de l’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éfinissez sur NULL.

lpszComment

Ignoré. Toutefois, la chaîne doit toujours comporter moins de 40 caractères, y compris la terminaison 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éfinissez 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 structure BLOB qui pointe vers une structure PNRPINFO . Des paramètres spécifiques dans la structure PNRPINFO doivent être définis. Pour plus d’informations, consultez la section structure PNRPINFO suivante.

PNRPINFO Structure

Si le membre lpBlob de la structure LPWSAQUERYSET est défini, 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 égal à 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 créée à l’aide de l’adresse IP dans saHint. Sinon, l’emplacement du service est créé à l’aide de la première adresse IP de la première entrée IPv6 du membre lpcsaBuffer .

saHint

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

enNameState

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

Désinscription d’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 le désinscrire.
  • Un nom d’homologue n’est pas inscrit automatiquement si WSACleanup est appelé.
  • PNRP supprime toujours l’inscription complète du nom de service. Il n’autorise pas la suppression d’adresses individuelles.
  • Lors de la désinscription 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 la désinscription d’un nom, la structure LPWSAQUERYSET que le paramètre lpqsRegInfo référence doit contenir les valeurs suivantes :

dwSize

Spécifie la taille de cette structure.

lpszServiceInstanceName

Spécifie un nom d’homologue à désinscrire.

lpServiceClassID

Doit être SVCID_PNRPNAME.

lpVersion

Ignoré. Définissez sur NULL.

lpszComment

Ignoré. Définissez 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éfinissez sur zéro (0).

lpszQueryString

Ignoré. Définissez sur NULL.

dwNumberOfCsAddrs

Ignoré. Définissez sur NULL.

lpcsaBuffer

Ignoré. Définissez sur NULL.

dwOutputFlags

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

lpBlob

Pointeur vers une structure BLOB qui pointe vers une structure PNRPINFO . Le membre lpszIdentity 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 BLOB

PNRP et WSAQUERYSET

PNRPINFO

Codes d’erreur PNRP NSP

WSACleanup

WSASetService