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.
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.
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 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.
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;
}