WindowsポータブルデバイスAPIとこのAPIが提供するPortableDeviceManagerを使用して、Windowsで接続されているポータブルデバイスを列挙しようとしています。
MSDNのドキュメントリンクとさまざまなブログのリンクに従ってデバイスIDの列挙を実装しましたが、すべて同じ問題が発生します。複数のデバイスが接続されている場合にのみ、 1つのデバイスのIDを取得できます。
これが私が使用している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;
コンピューターに2つのデバイスが接続されています。1つはリムーバブルUSBメモリスティックで、もう1つはデジタルカメラです。両方がアクティブな場合、カメラのデバイスIDのみが返されます。カメラを無効にすると、リムーバブルUSBスティックのデバイスIDが返されます。
私が間違っていることの方向に私を向けることができるこのAPIの経験を持つ人はいますか?