本文对Windows NT 操作系统的多线程同步机制和同步对象进行了分析,以其在检测仪和经纬仪同步通信程序开发中的应用为例,论述了如何通过共享事件来实现应用程序和设备驱动程序的同步通信,并给出了同步驱动程序的实现原理和具体编写步骤。
关键字:多线程;同步对象;Windows NT;设备驱动程序
应用程序与驱动程序的常规通信是通过驱动程序预留接口 ioctl 等函数实现的,驱动程
序的编写者也以实现这些调用为己任。但在某些情况下仅仅完成这些调用还不能满足用户的真正需要。比如,应用程序要随时知道底层硬件的中断情况,以便做出相应的处理。由于Windows NT 禁止应用程序对硬件中断直接访问,所以需要使用设备驱动程序跨越操作系统边界来截获硬件中断,实现用户程序和驱动程序的同步通信。完成这种同步通信需要利用多线程的同步对象来实现,即利用Event 事件实现二者间的通信。
检测仪是用来检测经纬仪外场工作状态并解算系统跟踪精度的仪器。它模拟中心机向经
纬仪发送引导数据,同时接收来自经纬仪的实测数据,以检测经纬仪的工作是否正常。检测仪内置时统卡,提供20Hz 中断同步信号,检测仪和经纬仪按照这一频率进行同步通信。因此,本文详细介绍如何利用共享事件机制,编写底层驱动程序,将时统卡提供的20Hz 中断信号及时通知上层应用程序,完成检测仪和经纬仪的同步通信。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !