Текущее значение порта USB - PullRequest
0 голосов
/ 11 августа 2011

Можно ли получить текущее значение порта USB при подключении к нему устройства?

Это значение должно быть доступно программно с использованием C #.Второй параметр, который мне нужен, это «Режим энергосбережения USB».Правильное имя свойства: «Разрешить компьютеру выключать это устройство для экономии энергии».

Мне удалось обнаружить устройство (если оно подключено или отключено) и правильно прочитать данные с него.

Эти два свойства принадлежат USB-устройству или USB-порту ?!

WinUSB Api не дал мне четких ответов на мои вопросы.

Ответы [ 2 ]

1 голос
/ 11 августа 2011

вы можете использовать WMI для получения свойств порта USB

public class MyClass
{
    public static void Main()
    {
        var usbDevices = GetUSBDevices();

        foreach (var usbDevice in usbDevices)
        {
            Console.WriteLine("Device ID: {0}, PNP Device ID: {1}, Description: {2}",
                usbDevice.DeviceID, usbDevice.PnpDeviceID, usbDevice.Description);
        }
    }

    static List<USBDeviceInfo> GetUSBDevices()
    {
        List<USBDeviceInfo> devices = new List<USBDeviceInfo>();

        var searcher = new ManagementObjectSearcher(@"Select * From Win32_SerialPort");

        foreach (var device in searcher.Get())
        {
            devices.Add(new USBDeviceInfo(
            (string)device.GetPropertyValue("DeviceID"),
            (string)device.GetPropertyValue("PNPDeviceID"),
            (string)device.GetPropertyValue("Description"),
            (string)device.GetPropertyValue("Name")
            ));
        }

        return devices;
    }

    class USBDeviceInfo
    {
        public USBDeviceInfo(string deviceID, string pnpDeviceID, string description, string name)
        {
            this.DeviceID = deviceID;
            this.PnpDeviceID = pnpDeviceID;
            this.Description = description;
            this.Name = name;
        }
        public string DeviceID { get; private set; }
        public string PnpDeviceID { get; private set; }
        public string Description { get; private set; }
        public string Name { get; private set; }

    }
}

посмотрите список свойств ниже

Наличие должно содержать информацию, которую вы ищете

http://msdn.microsoft.com/en-us/library/aa394413%28v=vs.85%29.aspx

0 голосов
/ 11 августа 2011

Я думаю, что большинство из того, что вы хотите, не имеет ничего общего с WinUSB из WinDDK, но больше связано с тем, как ОС обрабатывает устройства:

http://msdn.microsoft.com/en-us/library/aa394504%28v=VS.85%29.aspx - класс WMI для доступа к информации, связанной с USB
http://www.acpi.info/DOWNLOADS/ACPIspec40a.pdf - ACPI может оказать некоторую помощь

Если вам нужно углубиться в USB, см.
http://www.usb.org/developers - все соответствующие документы стандартов USB
http://www.beyondlogic.org/usbnutshell/usb1.shtml - некоторая полезная информация
http://www.libusb.org/ - библиотека для работы с USB на очень низком уровне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...