Я пытаюсь перечислить подключенные переносные устройства в Windows с помощью API Windows Portable Devices и PortableDeviceManager, предоставляемых этим API.
Я реализовал перечисление идентификаторов устройств после документации MSDN ссылка и различных блогов , но все они приводят к одной и той же проблеме - я могу получить ее, чтобы дать мне идентификатор одного устройства, если есть несколько подключенных.
Вот фрагмент кода С#, который я использую:
PortableDeviceManagerClass deviceManager = new PortableDeviceManagerClass();
deviceManager.RefreshDeviceList();
uint numberOfDevices = 1;
deviceManager.GetDevices(null, ref numberOfDevices);
if (numberOfDevices == 0)
{
return new string[0];
}
string [] deviceIds = new string[numberOfDevices];
deviceManager.GetDevices(ref deviceIds[0], ref numberOfDevices);
return deviceIds;
У меня есть два устройства, подключенные к компьютеру, один съемный USB-накопитель и одна цифровая камера. Когда оба они активны, будет возвращен только идентификатор устройства моей камеры. Когда я деактивирую камеру, возвращается идентификатор устройства съемного USB-накопителя.
Есть ли у кого-нибудь опыт работы с этим API, который может указать мне в сторону того, что я делаю неправильно?