Метод IWMDeviceManager2::EnumDevices2 (mswmdm.h)
Метод EnumDevices2 извлекает интерфейс перечисления, используемый для перечисления переносимых устройств, подключенных к компьютеру.
Корпорация Майкрософт настоятельно рекомендует приложениям использовать метод EnumDevices2 вместо IWMDeviceManager::EnumDevices.
Синтаксис
HRESULT EnumDevices2(
[out] IWMDMEnumDevice **ppEnumDevice
);
Параметры
[out] ppEnumDevice
Указатель на указатель на интерфейс IWMDMEnumDevice . Вызывающий объект отвечает за вызов Release в полученном интерфейсе.
Возвращаемое значение
Метод возвращает HRESULT. Все методы интерфейса в Windows Media диспетчер устройств могут возвращать любой из следующих классов кодов ошибок:
- Стандартные коды ошибок COM
- Коды ошибок Windows, преобразованные в значения HRESULT
- Коды ошибок диспетчер устройств Windows Media
Комментарии
Этот метод возвращает перечислитель, который использует преимущества системы Plug and Play (PnP) для ускорения перечисления и уменьшения использования памяти. Для поставщиков услуг PnP-жалобы он загружает в память только тех поставщиков услуг, у которых устройство в настоящее время подключено к компьютеру, и запрашивает только эти поставщики услуг для создания объектов устройств.
Этот метод возвращает snapshot устройств, подключенных при создании базового объекта. Чтобы убедиться, что список устройств обновлен, вызовите Метод 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 |
Header | mswmdm.h |
Библиотека | Mssachlp.lib |