Я пытаюсь перечислить подключенные переносные устройства в Windows с помощью API переносных устройств Windows и PortableDeviceManager, предоставляемых этим API.
Я реализовал перечисление идентификаторов устройств в соответствии с документацией MSDN ссылка и различными блогами ссылка , но все они приводят к одной и той же проблеме - я могу только заставить его дать Идентификатор устройства one , когда подключено несколько устройств.
Вот фрагмент кода C #, который я использую:
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, который может указать мне, что я делаю неправильно?