共用方式為


列舉 (對等基礎結構)

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

若要取得列舉並擷取結果

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