C++ Windows 7嵌入式系统上的英特尔EG20T GPIO

C++ Windows 7嵌入式系统上的英特尔EG20T GPIO,c++,gpio,intel-atom,windows-7-embedded,C++,Gpio,Intel Atom,Windows 7 Embedded,我目前正在尝试通过使用带有EG20T平台控制器的Intel Atom板上的中断来监听GPIO输入引脚何时变高。我正在使用英特尔的驱动程序,并在这里找到了他们的程序员指南: 这似乎相当简单,使用宏对特定的pin进行deviceIOControl调用,以执行您要执行的操作,但仍有一些事情我感到困惑 如何创建传递到DeviceIOControl调用的hHandle?或者更具体地说,如果我使用CreateFile,我应该传入什么作为文件/设备名 我真的不明白Notify是如何工作的,代码是否只是等待该方

我目前正在尝试通过使用带有EG20T平台控制器的Intel Atom板上的中断来监听GPIO输入引脚何时变高。我正在使用英特尔的驱动程序,并在这里找到了他们的程序员指南:

这似乎相当简单,使用宏对特定的pin进行deviceIOControl调用,以执行您要执行的操作,但仍有一些事情我感到困惑

  • 如何创建传递到DeviceIOControl调用的hHandle?或者更具体地说,如果我使用CreateFile,我应该传入什么作为文件/设备名
  • 我真的不明白Notify是如何工作的,代码是否只是等待该方法直到pin状态改变,然后在输出缓冲区中继续使用新数据

  • 问题1在指南的第5.1节中进行了说明。指南的第4.1节指出,
    IOCTL\u GPIO\u NOTIFY
    用于重叠I/O。。。。您应该将重叠的
    结构的
    hEvent
    设置为内核事件,当pin状态更改时将触发该事件。此内核事件与常见的Win32等待函数兼容,例如
    WaitForMultipleObjects
    MsgWaitForMultipleObjectsEx
    。谢谢!我是C++/WinAPI新手,所以我不知道重叠IO。我想我已经弄明白了那个部分,尽管我仍然不太明白5.1.1是怎么说的。我知道我可能需要做一些SetupDiXxx调用序列来获得可用的设备名称,然后从中选择,但我不知道应该使用什么名称,或者从哪里开始,因为有这么多。那
    GUID\u deviceinterface\u IOHGPIO
    是一个过滤器,可能只有一个设备路径与之匹配。