Здраствуйте!
у меня приложение получает список 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 накопителя и как потом ссылаясь на это имя извлечь накопитель автоматически?