Annulation de l’inscription d’un nom d’homologue
Lorsque vous annulez l’inscription d’un nom d’homologue, un nom inscrit est supprimé d’un Cloud PNRP (Peer Name Resolution Protocol).
Annulation de l’inscription d’un nom d’homologue
Pour annuler l’inscription d’un nom d’homologue, appelez WSASetService. Le paramètre essOperation doit avoir la valeur RNRSERVICE _ Delete. Utilisez les instructions des sections suivantes de cette rubrique pour effectuer les configurations requises pour les paramètres WSASetService et la structure WSAQUERYSET .
Configuration de WSASetService
Quand une application appelle WSASetService, les paramètres doivent être configurés conformément aux spécifications suivantes :
- essOperation doit avoir la valeur RNRSERVICE _ Delete.
- dwFlags doit avoir la valeur zéro (0).
- lpqsRegInfo doit pointer vers une structure WSAQUERYSET , qui doit être configurée à l’aide des instructions de la section suivante de cette rubrique.
Configuration de WSAQUERYSET
La structure WSAQUERYSET doit être configurée conformément aux spécifications suivantes :
- dwSize nul doit spécifier la taille de la structure WSAQUERYSET .
- lpszServiceInstanceName doit pointer sur le nom de l’homologue en cours d’annulation d’inscription.
- lpBlob doit pointer vers une structure PNRPINFO .
- lpcsaBuffer doit pointer vers la liste d’adresses.
Notes
Les membres restants sont décrits dans PNRP et WSASetService.
Exemple d’annulation de l’inscription d’un nom d’homologue
L’extrait de code suivant vous montre comment annuler l’inscription d’un nom d’homologue en fournissant les informations correctes lors de l’appel de WSASetService à l’aide de la structure WSAQUERYSET .
#define UNICODE
#include <initguid.h>
#include <p2p.h>
#pragma comment(lib, "ws2_32.lib")
//-------------------------------------------------------------------------
// Function: PnrpUnregister
//
// Purpose: Unregister the given name from a PNRP cloud
//
// Arguments:
// pwzIdentity : identity string originally used to register the name
// pwzName : name to unregister from PNRP
// pwzCloud : name of the cloud to unregister from, NULL = global cloud
//
// Returns: HRESULT
//
HRESULT PnrpUnregister(PWSTR pwzIdentity, PWSTR pwzName, PWSTR pwzCloud)
{
HRESULT hr = S_OK;
PNRPINFO pnrpInfo = {0};
BLOB blPnrpData = {0};
WSAQUERYSET querySet = {0};
INT iRet;
//
// build the WSAQUERYSET required to unregister
//
pnrpInfo.dwSize = sizeof(pnrpInfo);
pnrpInfo.dwLifetime = 60 * 60 * 8; // 8 hours
pnrpInfo.lpwszIdentity = pwzIdentity;
blPnrpData.cbSize = sizeof(pnrpInfo);
blPnrpData.pBlobData = (BYTE*)&pnrpInfo;
querySet.dwSize = sizeof(querySet);
querySet.dwNameSpace = NS_PNRPNAME;
querySet.lpServiceClassId = (LPGUID)&SVCID_PNRPNAME;
querySet.lpszServiceInstanceName = pwzName;
querySet.lpszContext = pwzCloud;
querySet.lpBlob = &blPnrpData;
// unregister the name with PNRP
iRet = WSASetService(&querySet, RNRSERVICE_DELETE, 0);
if (iRet != 0)
{
hr = HRESULT_FROM_WIN32(WSAGetLastError());
}
return hr;
}