對等基礎結構 (列舉)
藉由使用列舉,您可以取得符合準則之所有特定對等實體的清單。
取得列舉並擷取結果
取得列舉的控制碼。 例如呼叫 PeerEnum 函式,呼叫 PeerGraphEnumRecords Peer Graphing 函式。 PeerEnum函式會建立列舉,並將該列舉的控制碼傳回給呼叫的應用程式。 這個控制碼必須用來擷取結果。
選擇性地取得列舉中的實體數目。 呼叫 GetItemCount 函式,例如呼叫 PeerGraphGetItemCount 或 PeerGetItemCount。
注意
您可以使用 GetItemCount 函式所傳回的值來判斷可供擷取的專案數目。
擷取結果群組。 呼叫 GetNextItem 函式,例如呼叫 PeerGraphGetNextItem。
注意
當應用程式呼叫 GetNextItem 函式時,它會指定要傳回的實體數目,然後函式會傳回實體指標陣列的指標,以及一律小於或等於所指定數位的實體數目。 應用程式可能需要多次呼叫此函式,直到傳回的實體數目小於所要求的數目為止。
不需要資料之後,請釋放資料的指標。 呼叫 FreeData 函式,例如呼叫 PeerGraphFreeData 或 PeerFreeData。
注意
如需詳細資訊,請參閱 釋放對等資料。
應用程式不需要列舉的控制碼之後,請釋放它。 呼叫 EndEnumeration 函式,例如呼叫 PeerEndEnumeration 或 PeerGraphEndEnumeration。
列舉的範例
下列程式碼片段示範如何列舉可用的身分識別。
#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;
}