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

另请参阅

枚举设备

IWMDMEnumDevice 接口

IWMDeviceManager2 接口