iWMDeviceManager2::EnumDevices2 方法 (mswmdm.h)
EnumDevices2 方法检索枚举接口,该接口用于枚举连接到计算机的可移植设备。
Microsoft 强烈建议应用程序使用 EnumDevices2 方法,而不是 IWMDeviceManager::EnumDevices。
语法
HRESULT EnumDevices2(
[out] IWMDMEnumDevice **ppEnumDevice
);
参数
[out] ppEnumDevice
指向 IWMDMEnumDevice 接口的指针的指针。 调用方负责在检索到的接口上调用 Release 。
返回值
该方法返回 HRESULT。 Windows Media 设备管理器 中的所有接口方法都可以返回以下任一类错误代码:
- 标准 COM 错误代码
- 转换为 HRESULT 值的 Windows 错误代码
- Windows Media 设备管理器错误代码
注解
此方法返回一个枚举器,该枚举器利用即插即用 (PnP) 系统,加快枚举速度并降低内存使用率。 对于 PnP 投诉服务提供商,它仅在内存中加载具有当前连接到计算机的设备的服务提供商,并仅请求这些服务提供商创建设备对象。
此方法返回首次创建基础对象时连接的设备的快照。 若要确保设备列表是最新的,请在调用此方法之前调用 Reinitialize 。
示例
以下 C++ 代码循环访问所有设备,并检索每个设备的显示名称。
// Enumerate through the devices using the faster EnumDevices2 Plug-and-Play method.
// IWMDevMgr2 is a global IWMDeviceManager2 pointer.
CComPtr<IWMDMEnumDevice> pEnumDevice;
hr = pIWMDevMgr2->EnumDevices2(&pEnumDevice);
if (hr == S_OK)
{
// Length of all the strings we'll send in.
const UINT MAX_CHARS = 100;
WCHAR name[MAX_CHARS];
// Enumerate through devices using a dummy loop.
while(TRUE)
{
// Get a device handle.
IWMDMDevice* pDevice;
ULONG ulFetched = 0;
hr = pEnumDevice->Next(1, &pDevice, &ulFetched);
CComQIPtr<IWMDMDevice2> pDevice2(pDevice);
if (hr != S_OK || ulFetched != 1)
{
break;
}
ZeroMemory(name, MAX_CHARS);
hr = pDevice2->GetName(name, MAX_CHARS);
}
}
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | mswmdm.h |
Library | Mssachlp.lib |