Перечисление портативных устройств Windows в C #

Я пытаюсь перечислить подключенные портативные устройства в Windows, используя Windows Portable Devices API и PortableDeviceManager, предоставляемые этим API.

Я реализовал перечисление идентификаторов устройств по ссылке документации MSDN и различным блогам по ссылке , но все они приводят к одной и той же проблеме - я могу получить его только для получения идентификатора одного устройства, когда их несколько.

Вот фрагмент кода 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, который может указать мне на то, что я делаю неправильно?

13
задан Lamloumi Afif 26 August 2014 в 08:52
поделиться