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.
Rubriques connexes
-
WSASetService