Enumerationen (Peer-Infrastruktur)
Mithilfe von Enumerationen können Sie eine Liste aller spezifischen Peerentitäten abrufen, die Ihren Kriterien entsprechen.
Abrufen einer Enumeration und Abrufen der Ergebnisse
Rufen Sie ein Handle für die Enumeration ab. Rufen Sie beispielsweise eine PeerEnum--Funktion auf, indem Sie beispielsweise die PeerGraphEnumRecords Peer Graphing-Funktion aufrufen. Die PeerEnum- Funktionen erstellen die Enumeration und geben ein Handle an diese Enumeration an die aufrufende Anwendung zurück. Dieses Handle muss zum Abrufen der Ergebnisse verwendet werden.
Rufen Sie optional die Anzahl der Entitäten in der Enumeration ab. Rufen Sie eine GetItemCount--Funktion auf, z. B. PeerGraphGetItemCount oder PeerGetItemCount-.
Anmerkung
Sie können den von der GetItemCount-Funktion zurückgegebenen Wert verwenden, um die Anzahl der abzurufenden Elemente zu bestimmen.
Dient zum Abrufen einer Gruppe von Ergebnissen. Rufen Sie eine GetNextItem--Funktion auf, z. B. PeerGraphGetNextItem-aufrufen.
Anmerkung
Wenn eine Anwendung eine GetNextItem--Funktion aufruft, gibt sie die Anzahl der zurückzugebenden Entitäten an, und dann gibt die Funktion einen Zeiger auf ein Array von Zeigern auf die Entitäten und die Anzahl der Entitäten zurück, die immer kleiner oder gleich der angegebenen Zahl ist. Eine Anwendung muss diese Funktion möglicherweise mehrmals aufrufen, bis die Anzahl der zurückgegebenen Entitäten kleiner als die angeforderte Zahl ist.
Nachdem die Daten nicht benötigt wurden, geben Sie den Mauszeiger auf die Daten frei. Rufen Sie beispielsweise eine FreeData--Funktion auf, rufen Sie PeerGraphFreeData- oder PeerFreeData-auf.
Anmerkung
Weitere Informationen finden Sie unter Freigeben von Peerdaten.
Nachdem die Anwendung das Handle für die Enumeration nicht benötigt, geben Sie es frei. Rufen Sie eine EndEnumeration--Funktion auf, z. B. PeerEndEnumeration oder PeerGraphEndEnumeration.
Beispiel für eine Aufzählung
Der folgende Codeausschnitt zeigt, wie Sie durch verfügbare Identitäten aufzählen.
#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;
}