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.
Rubriques connexes
-
PNRP et le BLOB
-
WSASetService