1

如何在 Windows 环境下访问 GPIO、I²C、SPI、PWM 等?

目前我有两个英特尔 NUC5i5MYBE 主板。一块板有 WindRiver Linux,另一块板有 Windows 10 Enterprise。

在 Linux 上,我在访问上述所有内容时都没有任何问题,但在 Windows 环境中存在问题。

在Windows中,我的目标是利用CreateFileWindows的功能来打开这样的界面。

但在调用此函数之前,我需要提供此函数的设备路径。为此,我的目标是使用以下函数以及数据结构来找出设备路径。

SetupDiGetClassDevs()

SetupDiEnumDeviceInterfaces()

SetupDiGetDeviceInterfaceDetail()

HDEVINFO

SP_DEVINFO_DATA

PSP_DEVICE_INTERFACE_DETAIL_DATA

但是主要的问题和未知的事情是如何将 GUID 提供给 SetupDiGetClassDevs 作为第一个参数?

SetupDiGetClassDevs 的 Windows 原型如下。

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

1 回答 1

0

对于已知/特定设备,您可以从其 INF 文件或注册表中找到类 Guid - 正如这篇 SO 帖子所建议的 -在 Windows XP 上获取现有 USB 设备的 GUID。然后在调用中使用这个 Class GuidSetupDiGetClassDevs

来自 INF 文件的 Guid:用于访问 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);
    }
于 2015-11-27T11:01:44.040 回答