Здраствуйте!
у меня приложение получает список USB накопителей через стандвртные Функции API :
SetupAPI.SP_DEVINFO_DATA DeviceInfoData = new SetupAPI.SP_DEVINFO_DATA();
DeviceInfoData.cbSize = Marshal.SizeOf(DeviceInfoData);
result = SetupAPI.SetupDiEnumDeviceInfo(PnPHandle, DeviceIndex, ref DeviceInfoData);
if (result == 1)
{
if (GetRegistryProperty(PnPHandle, ref DeviceInfoData, SetupAPI.RegPropertyType.SPDRP_MFG) == "USB-совместимое запоминающее устройство")
{
Console.WriteLine("{0}:\n\t{1}:\n\t{2}:\n\t{3}:\n\t{4}",
GetRegistryProperty(PnPHandle, ref DeviceInfoData, SetupAPI.RegPropertyType.SPDRP_DEVICEDESC),
GetRegistryProperty(PnPHandle, ref DeviceInfoData, SetupAPI.RegPropertyType.SPDRP_CLASS),
GetRegistryProperty(PnPHandle, ref DeviceInfoData, SetupAPI.RegPropertyType.SPDRP_CLASSGUID ),
GetRegistryProperty(PnPHandle, ref DeviceInfoData, SetupAPI.RegPropertyType.SPDRP_DRIVER ),
GetRegistryProperty(PnPHandle, ref DeviceInfoData, SetupAPI.RegPropertyType.SPDRP_MFG));
Потом происходит некая обработка и при невыполнени условия накопитель отключается автоматически:
if (IsRemovable(DeviceInfoData))
{
Console.WriteLine("{0}", GetRegistryProperty(PnPHandle, ref DeviceInfoData, SetupAPI.RegPropertyType.SPDRP_DEVICEDESC));
if (SetupAPI.CM_Request_Device_Eject(DeviceInfoData.DevInst, null, null, 0, 0) == 0)
Console.WriteLine("Устройство успешно отключено.");
}
Теперь у меня возникла проблема, для моей обработки необходимо получить имя USB накопителя в Windows. А для его извлечения DeviceInfoData.DevInst. Как можно получить имя USB накопителя и как потом ссылаясь на это имя извлечь накопитель автоматически?