Opsommingen (peerinfrastructuur)
Met behulp van Opsommingen kunt u een lijst ophalen met alle specifieke peer-entiteiten die voldoen aan uw criteria.
Om een opsomming te verkrijgen en de resultaten op te halen
Haal een ingang op voor de opsomming. Roep een PeerEnum--functie aan, bijvoorbeeld de functie PeerGraphEnumRecords Peer Graphing. De PeerEnum--functies maken de opsomming en retourneren een ingang naar die opsomming naar de aanroepende toepassing. Deze ingang moet worden gebruikt om de resultaten op te halen.
U kunt eventueel het aantal entiteiten in de opsomming verkrijgen. Roep een Functie GetItemCount aan, bijvoorbeeld PeerGraphGetItemCount of PeerGetItemCount.
Notitie
U kunt de waarde die wordt geretourneerd door de functie GetItemCount gebruiken om het aantal items te bepalen dat kan worden opgehaald.
Haal een groep resultaten op. Roep een Functie GetNextItem aan, bijvoorbeeld PeerGraphGetNextItem.
Notitie
Wanneer een toepassing een GetNextItem-functie aanroept, geeft deze het aantal entiteiten op dat moet worden geretourneerd. Vervolgens retourneert de functie een aanwijzer naar een matrix met aanwijzers naar de entiteiten en het aantal entiteiten, dat altijd kleiner is dan of gelijk is aan het opgegeven getal. Een toepassing moet deze functie mogelijk vaak aanroepen, totdat het aantal geretourneerde entiteiten kleiner is dan het aangevraagde aantal.
Nadat de gegevens niet nodig zijn, kunt u de aanwijzer naar de gegevens vrij maken. Roep een FreeData--functie aan, bijvoorbeeld PeerGraphFreeData- of PeerFreeData-.
Notitie
Zie Peer-gegevens vrijmakenvoor meer informatie.
Nadat de toepassing de ingang niet nodig heeft voor de opsomming, laat u deze los. Roep een EndEnumeration functie aan, bijvoorbeeld PeerEndEnumeration of PeerGraphEndEnumeration.
Voorbeeld van een opsomming
In het volgende codefragment ziet u hoe u de beschikbare identiteiten opsommen.
#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;
}