admin管理员组文章数量:1531469
一、前言
在无操作系统的裸机中,或者类似如DOS这样操作系统中,应用程序和硬件的交互是非常简单的。如果没有操作系统,我们访问硬件空间可能只需一条指令就行,甚至可以访问任意的内存空间或者IO空间。但是在WINDOWS操作系统中,应
用程序与硬件间被完全隔离开来,应用程序与软件的通信就必须依赖于依赖驱动程序。有点类似于现在的网上购物,卖家相当于硬件,而卖家相当于应用程序,淘宝等类似的购物网站相当于驱动程序,而卖家与买家之间的买卖就得依赖
于淘宝等类似的购物网站。至于为什么要把硬件层和应用程序隔开,答案是——安全。允许应用程序随意访问硬件是一件很危险的事情,除了可能会造成蓝屏死机之类的问题,还会发生密码的安全性问题。那在我们日常开发过程当中哪
些场景需要涉及到硬件与软件的交互呢?
二、应用程序与硬件交互的场景
1.读取硬件信息
当应用程序需要与硬件进行捆绑时,就需要获取对应的硬件信息,例如触摸框绑定、MCU绑定等等,需要读取出对应硬件的信息,并与预期的信息进行比较来判断是否进行了绑定。获取MCU版本号等等。
2.与硬件进行通信
应用程序与硬件进行通信,比单纯的读取硬件信息稍微复杂一点。例如通过MCU来进行定时开关机,首先需要根据对应的信息查找指定的MCU设备,然后将对应的定时开关机指定发送给MCU,MCU收到信息之后,发送信息给应用程序,告之
定时开关机的指定是否设置成功。这其中包含了应用程序与硬件之间的通信。
3.硬件的管理
例如磁盘的管理,我们可以自己编写应用程序对磁盘进行一系列的管理,磁盘分区、磁盘大小等等。移动设备管理工具等等都可以实现。
4.其他
当然还有很多很多啦....
那么,既然我们提到了这么多得应用场景,那我们如何来实现它们呢?那接下来就不得不提SetupDi这一系列API了。
三、SetupDi API
1.HidD_GetHidGuid
函数定义
BOOL
Hidd_GetHidGuid(
&guidHID 指向GUID类型的指针
);
HID类设备是通过GUID类型值作标识的,调用函数HidD_GetHidGuid颗获得HID设备的标识
2.SetupDiGetClassDevs
函数定义
HDEVINFO
SetupDiGetClassDevs(
const GUID *ClassGuid,//HID类设备是通过GUID类型值作标识的,如图1.图Guid示例,通过指向Guid的指针,获取对应的设备列表。
PCTSTR Enumerator,
HWND h
版权声明:本文标题:应用程序与硬件进行交互(实现硬件绑定、应用程序与硬件通信) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1726817257a1085521.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论