Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med hjälp av uppräkningar kan du hämta en lista över alla specifika peer-entiteter som matchar dina kriterier.
Hämta en uppräkning och hämta resultatet
Hämta ett handtag till uppräkningen. Anropa en PeerEnum-funktion, till exempel anropa funktionen PeerGraphEnumRecords Peer Graphing. Funktionerna PeerEnum skapar uppräkningen och returnerar ett handtag till uppräkningen till det anropande programmet. Det här handtaget måste användas för att hämta resultatet.
Du kan också hämta antalet entiteter i uppräkningen. Anropa en GetItemCount-funktion, till exempel anropa PeerGraphGetItemCount eller PeerGetItemCount.
Not
Du kan använda värdet som returneras av funktionen GetItemCount för att fastställa antalet tillgängliga objekt som ska hämtas.
Hämta en grupp med resultat. Anropa funktionen GetNextItem, till exempel anropa PeerGraphGetNextItem.
Not
När ett program anropar en Funktionen GetNextItem anger det antalet entiteter som ska returneras och sedan returnerar funktionen en pekare till en matris med pekare till entiteterna och antalet entiteter, som alltid är mindre än eller lika med det angivna talet. Ett program kan behöva anropa den här funktionen många gånger – tills antalet entiteter som returneras är mindre än det begärda antalet.
När data inte behövs frigör du pekaren till data. Anropa en FreeData-funktion, till exempel anropa PeerGraphFreeData eller PeerFreeData.
Not
Mer information finns i Freeing Peer Data.
När programmet inte behöver handtaget till uppräkningen släpper du det. Anropa en EndEnumeration-funktion, till exempel anropa PeerEndEnumeration eller PeerGraphEndEnumeration.
Exempel på en uppräkning
Följande kodfragment visar hur du räknar upp genom tillgängliga identiteter.
#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;
}