Как получить доступ к GPIO, I²C, SPI и PWM в Windows 10 с помощью функции SetupDiGetClassDevs() и какова здесь важность GUID?

Как получить доступ к GPIO, I²C, SPI, PWM и т. Д. В среде Windows?

В настоящее время у меня есть две материнские платы Intel NUC5i5MYBE. На одной плате установлен WindRiver Linux, а на другой - Windows 10 Enterprise.

В Linux у меня нет проблем с доступом ко всему вышеперечисленному, но проблема со средой Windows.

В Windows моей целью является использование CreateFile Функция Windows, чтобы открыть такие интерфейсы.

Но прежде чем я вызову эту функцию, мне нужно указать путь к устройству для этой функции. Для этого моей целью является использование следующих функций, а также структуры данных для определения пути к устройству.

SetupDiGetClassDevs ()

SetupDiEnumDeviceInterfaces ()

SetupDiGetDeviceInterfaceDetail ()

HDEVINFO

SP_DEVINFO_DATA

PSP_DEVICE_INTERFACE_DETAIL_DATA

Но главная проблема и неизвестная вещь - как предоставить GUID для SetupDiGetClassDevs в качестве первого аргумента?

Прототип Windows для SetupDiGetClassDevs выглядит следующим образом.

HDEVINFO SetupDiGetClassDevs(
  _In_opt_ const GUID   *ClassGuid,
  _In_opt_       PCTSTR Enumerator,
  _In_opt_       HWND   hwndParent,
  _In_           DWORD  Flags
);

1 ответ

Для известного / определенного устройства вы можете найти Class Guid из его INF-файла ИЛИ из Реестра - как и предполагает этот пост SO - Получение GUID для Существующего USB-устройства в Windows XP. Затем используйте этот класс Guid в вызове SetupDiGetClassDevs

Guid From INF-файл: для доступа к записям INF-файла используйте SetupOpenInfFile, SetupFindFirstLine и SetupGetStringField - согласно этому документу msdn https://msdn.microsoft.com/en-us/library/windows/hardware/ff549402(v=vs.85).aspx

Guid From Registry: есть много сообщений для доступа к разделам реестра, например, это сообщение SO - Как прочитать значение из реестра Windows

Наконец, не забудьте уничтожить DeviceInfo после того, как вы закончите использовать их следующим образом:

    if (hdevinfo) {
    SetupDiDestroyDeviceInfoList(DeviceInfoSet);
    }
Другие вопросы по тегам