Как получить доступ к 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);
}