对等基础结构) (枚举
通过使用枚举,可以获取与条件匹配的所有特定对等实体的列表。
获取枚举并检索结果
获取枚举的句柄。 调用 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;
}