2015-11-26 3 views
0

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

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

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

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

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

SetupDiGetClassDevs()

SetupDiEnumDeviceInterfaces()

SetupDiGetDeviceInterfaceDetail()

HDEVINFO

SP_DEVINFO_DATA

PSP_DEVICE_INTERFACE_DETAIL_DATA

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

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

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

Если ответ помог ваш вопрос, рассмотреть upvoting или выбрать в качестве ответа – vijiboy

ответ

0

При известном/конкретном устройстве, вы можете найти класс Guid из его INF-файла или из реестра - Как видно из этого SO пост - Obtaining GUID for Existing USB Device on Windows XP. Затем используйте этот класс Guid в вызове SetupDiGetClassDevs

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

Guid из реестра: есть много сообщений для доступа к таким ключам системы, как этот SO post - How to read a value from the Windows registry

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

if (hdevinfo) { 
    SetupDiDestroyDeviceInfoList(DeviceInfoSet); 
    } 
+0

Спасибо. Это довольно интересно и что-то новое с вашей стороны. В соответствии с этими фундаментальными принципами файла INF мы можем получить GUID от заинтересованных устройств. Можете ли вы рассказать мне больше о том, что является желательным путем для доступа к интересующему INF-файлу. потому что есть два пути C: \ Windows \ System32 \ DriverStore \ FileRepository и C: \ Windows \ inf (оба имеют одинаковый контент INF-файла), но есть ли какой-либо отраслевой стандарт два доступа только один из двух? –

+0

И еще вопрос относительно этого GUID, если GUID для одного и того же класса устройств одинаковы, то как будут дифференцироваться устройства.Точнее, я могу сказать, что GUID для «Системных устройств» (из диспетчера устройств) имеют одинаковый GUID, а затем как система различает каждое устройство под классом «Системные устройства» –

+0

Я не знаю ни одного стандартного отраслевого пути, но DriverStore является стандартным местоположением начиная с Windows Vista и выше. Сначала вы можете попытаться запустить код, выбрав один из двух местоположений. Y – vijiboy

Смежные вопросы