共用方式為


對等基礎結構 (列舉)

藉由使用列舉,您可以取得符合準則之所有特定對等實體的清單。

取得列舉並擷取結果

  1. 取得列舉的控制碼。 例如呼叫 PeerEnum 函式,呼叫 PeerGraphEnumRecords Peer Graphing 函式。 PeerEnum函式會建立列舉,並將該列舉的控制碼傳回給呼叫的應用程式。 這個控制碼必須用來擷取結果。

  2. 選擇性地取得列舉中的實體數目。 呼叫 GetItemCount 函式,例如呼叫 PeerGraphGetItemCountPeerGetItemCount

    注意

    您可以使用 GetItemCount 函式所傳回的值來判斷可供擷取的專案數目。

     

  3. 擷取結果群組。 呼叫 GetNextItem 函式,例如呼叫 PeerGraphGetNextItem

    注意

    當應用程式呼叫 GetNextItem 函式時,它會指定要傳回的實體數目,然後函式會傳回實體指標陣列的指標,以及一律小於或等於所指定數位的實體數目。 應用程式可能需要多次呼叫此函式,直到傳回的實體數目小於所要求的數目為止。

     

  4. 不需要資料之後,請釋放資料的指標。 呼叫 FreeData 函式,例如呼叫 PeerGraphFreeDataPeerFreeData

    注意

    如需詳細資訊,請參閱 釋放對等資料

     

  5. 應用程式不需要列舉的控制碼之後,請釋放它。 呼叫 EndEnumeration 函式,例如呼叫 PeerEndEnumerationPeerGraphEndEnumeration

列舉的範例

下列程式碼片段示範如何列舉可用的身分識別。

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