Eş Adı Kayıt Silme
Bir eş adının kaydını kaldırdığınızda, kayıtlı bir ad Eş Adı Çözümleme Protokolü (PNRP) bulutundan kaldırılır.
Eş Adının Kaydını Kaldırma
Bir eş adının kaydını kaldırmak için WSASetServiceçağrısında bulunun. essOperation parametresi RNRSERVICE_DELETEdeğerine sahip olmalıdır. WSASetService parametrelerine ve WSAQUERYSET yapısına gerekli yapılandırmaları yapmak için bu konunun aşağıdaki bölümlerindeki yönergeleri kullanın.
WSASetService'i Yapılandırma
Bir uygulama WSASetServiceçağırdığında, parametreler aşağıdaki belirtimlere göre yapılandırılmalıdır:
- essOperation değeri RNRSERVICE_DELETEolmalıdır.
- dwFlags sıfır (0) olmalıdır.
- lpqsRegInfo, bu konunun aşağıdaki bölümündeki yönergeler kullanılarak yapılandırılması gereken bir WSAQUERYSET yapısına işaret etmelidir.
WSAQUERYSET'i yapılandırma
WSAQUERYSET yapısı aşağıdaki belirtimlere göre yapılandırılmalıdır:
- dwSize, WSAQUERYSET yapısının boyutunu belirtmelidir.
- lpszServiceInstanceName, kaydı kaldırılmakta olan eş adına işaret etmelidir.
- lpBlobPNRPINFO yapısına işaret etmelidir.
- lpcsaBuffer adres listesine işaret etmelidir.
Not
Kalan üyeler PNRP ve WSASetServiceiçinde açıklanmıştır.
Eş Adının Kaydını Kaldırma Örneği
Aşağıdaki kod parçacığı, WSAQUERYSET yapısını kullanarak WSASetService çağırırken doğru bilgileri sağlayarak eş adının kaydını nasıl kaldırabileceğinizi gösterir.
#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;
}