다음을 통해 공유


열거형(피어 인프라)

열거형을 사용하면 조건과 일치하는 모든 특정 피어 엔터티 목록을 가져올 수 있습니다.

열거형을 가져오고 결과를 검색하려면

  1. 열거형에 대한 핸들을 가져옵니다. 예를 들어 PeerEnum 함수를 호출하여 PeerGraphEnumRecords Peer Graphing 함수를 호출합니다. PeerEnum 함수는 열거형을 만들고 해당 열거형에 대한 핸들을 호출 애플리케이션에 반환합니다. 이 핸들은 결과를 검색하는 데 사용해야 합니다.

  2. 필요에 따라 열거형의 엔터티 수를 가져옵니다. 예를 들어 GetItemCount 함수를 호출하여 PeerGraphGetItemCount 또는 PeerGetItemCount를 호출합니다.

    참고

    GetItemCount 함수에서 반환된 값을 사용하여 검색할 수 있는 항목 수를 확인할 수 있습니다.

     

  3. 결과 그룹을 검색합니다. 예를 들어 GetNextItem 함수를 호출하여 PeerGraphGetNextItem을 호출합니다.

    참고

    애플리케이션이 GetNextItem 함수를 호출할 때 반환할 엔터티 수를 지정한 다음, 함수는 엔터티에 대한 포인터 배열 및 항상 지정된 수보다 작거나 같은 엔터티 수에 대한 포인터를 반환합니다. 반환된 엔터티 수가 요청된 수보다 적을 때까지 애플리케이션에서 이 함수를 여러 번 호출해야 할 수 있습니다.

     

  4. 데이터가 필요하지 않으면 데이터에 대한 포인터를 해제합니다. FreeData 함수를 호출합니다. 예를 들어 PeerGraphFreeData 또는 PeerFreeData를 호출합니다.

    참고

    자세한 내용은 피어 데이터 해제를 참조하세요.

     

  5. 애플리케이션이 열거형에 대한 핸들이 필요하지 않으면 해제합니다. EndEnumeration 함수를 호출합니다(예: PeerEndEnumeration 또는 PeerGraphEndEnumeration).

열거형의 예

다음 코드 조각에서는 사용 가능한 ID를 열거하는 방법을 보여 줌

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