Aracılığıyla paylaş


Numaralandırmalar (Eş Altyapı)

Numaralandırmalar'ı kullanarak, ölçütlerinizle eşleşen tüm belirli eş varlıkların listesini alabilirsiniz.

Numaralandırma almak ve sonuçları almak için

  1. Sabit listesi için bir tanıtıcı alın. PeerEnum işlevini çağırın; örneğin, PeerGraphEnumRecordsPeer Graphing işleviniçağırın. PeerEnum işlevleri numaralandırmayı oluşturur ve bu numaralandırmaya çağıran uygulamaya bir tanıtıcı döndürür. Sonuçları almak için bu tanıtıcı kullanılmalıdır.

  2. İsteğe bağlı olarak, numaralandırmadaki varlık sayısını elde edin. GetItemCount işlevini çağır, örneğin, PeerGraphGetItemCount veya PeerGetItemCountçağır.

    Not

    GetItemCount işlevinin döndüreceği değeri, alınabilecek öğe sayısını belirlemek için kullanabilirsiniz.

     

  3. Bir sonuç grubu alın. GetNextItem işlevini çağır, örneğin, PeerGraphGetNextItemçağrısı.

    Not

    Bir uygulama GetNextItem işlevini çağırdığında, döndürülecek varlık sayısını belirtir ve ardından işlev, varlıklara yönelik bir işaretçi dizisine bir işaretçi ve her zaman belirtilen sayıdan küçük veya buna eşit olan varlık sayısını döndürür. Döndürülen varlık sayısı istenen sayıdan az olana kadar bir uygulamanın bu işlevi birçok kez çağırması gerekebilir.

     

  4. Verilere gerek duyulmadıktan sonra, işaretçiyi veriye boşaltın. FreeData işlevini çağır, örneğin, PeerGraphFreeData veya PeerFreeDataçağır.

    Not

    Daha fazla bilgi için bkz. Eş Verileri Boşaltma.

     

  5. Uygulamanın sabit listesi için tanıtıcıya ihtiyacı olmadığında bırakın. EndEnumeration işlevini çağır, örneğin, PeerEndEnumeration veya PeerGraphEndEnumerationçağır.

Sabit Listesi Örneği

Aşağıdaki kod parçacığı, kullanılabilir kimlikler arasında nasıl numaralandırabileceğinizi gösterir.

#include <p2p.h>
#include <stdio.h>

#pragma comment(lib, "p2p.lib")

//-----------------------------------------------------------------------------
// Function: EnumIdentities
//
// Purpose:  Demonstrate how to enumerate identities.
//
// Returns:  HRESULT
//

HRESULT EnumIdentities(void)
{
    HPEERENUM hPeerEnum = NULL;
    HRESULT hr = PeerEnumIdentities(&hPeerEnum);

    if (SUCCEEDED(hr))
    {
        ULONG cIdentities = 0;
        hr = PeerGetItemCount(hPeerEnum, &cIdentities);

        if (SUCCEEDED(hr))
        {
            ULONG i;

            for (i = 0; i < cIdentities; i++)
            {
                ULONG cItem = 1; // process one result at a time
                PEER_NAME_PAIR ** ppNamePair = NULL; // pointer to an array of pointers

                hr = PeerGetNextItem(hPeerEnum, &cItem, (PVOID**) &ppNamePair);

                if (SUCCEEDED(hr) && (1 == cItem))
                {
                    wprintf(L"%s [%s]\r\n", (*ppNamePair)->pwzFriendlyName, (*ppNamePair)->pwzPeerName);
                    PeerFreeData(ppNamePair);
                }
            }
        }
        PeerEndEnumeration(hPeerEnum);
    }
 
    return hr;
}