Aracılığıyla paylaş


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