基于PCI总线的实时测频卡WDM驱动程序设计

[09-13 16:56:10]   来源:http://www.88dzw.com  接口定义   阅读:8762

文章摘要:status=m_Irq.InifializeAndConnect(pResListTranslated,LinkTo(Isr_Irq),This);m_DpcFor_Irq.Setup(LinkTo(DpeFor_Irq),this);中断服务例程的处理时间应尽量短,对于一些耗时,但不需要立即处理的任务,中断服务程序会调用一个低于中断服务程序DIRQL级别的延迟过程调用程序DPC,在DISPATCH_LEVEL上完成处理,这个级别上的限制较少,函数调用也相对比较方便。在中断服务例程中,首先判断中断是否是自己设备产生的,若不是,返回FALSE;若是,进行必要的处理,请求一个DPC(延时过程调用

基于PCI总线的实时测频卡WDM驱动程序设计,标签:接口技术,微机原理与接口技术,http://www.88dzw.com

  status=m_Irq.InifializeAndConnect(pResListTranslated,LinkTo(Isr_Irq),This);

  m_DpcFor_Irq.Setup(LinkTo(DpeFor_Irq),this);

  中断服务例程的处理时间应尽量短,对于一些耗时,但不需要立即处理的任务,中断服务程序会调用一个低于中断服务程序DIRQL级别的延迟过程调用程序DPC,在DISPATCH_LEVEL上完成处理,这个级别上的限制较少,函数调用也相对比较方便。在中断服务例程中,首先判断中断是否是自己设备产生的,若不是,返回FALSE;若是,进行必要的处理,请求一个DPC(延时过程调用),然后返回TRUE。关键代码如下:


  在延时过程调用例程DpcFor_Irq中,读取所测信号的频率参数:


  5驱动程序与应用程序之间的通信

  虽然驱动程序是为设备的硬件层编程服务的,但同样需要提供和应用程序进行通信的能力,从而最终达到应用程序控制设备的目的。应用程序与驱动程序之间的通信通过调用Win32 API来实现,应用程序用Creatfile函数通过已经定义的设备接口来获取驱动程序文件句柄,然后将文件句柄作为其他Win32 API函数的一个参数,对驱动程序的进行数据操作。调用DeviceloControl进行数据量较小的,如控制指令传输或端口、寄存器访问;调用ReadFile,WriteFile等函数进行数据量较大的传输,如内存读/写等。驱动程序与应用程序的通信有DeviceControl异步完成、共享Win32事件通知两种方式。Win32事件通知是由应用程序创建了一个事件后,设置事件的状态为Unsignal,然后直接将该事件句柄传递给驱动程序,等待驱动程序发送事件通知。驱动程序通过类Kevent获取这个事件的一个对象指针后,在IRQL≤DISPATCH_LEVEL级别的例程中设置事件信号状态为Signal来通知应用程序进行后续处理。

  6结语

  基于上述的硬件结构和驱动程序设计方法,成功开发了一款实时测频卡,在实际中得到了很好的应用,板卡工作正常,达到了预期效果。实践证明,DriverWorks是一款功能强大,使用方便的驱动程序开发工具,利用它可以方便快捷地构造PCI设备的驱动程序框架,大大加快了开发周期,提高了开发效率。


上一页  [1] [2] [3] 


Tag:接口定义接口技术,微机原理与接口技术接口定义
分类导航
最新更新
热门排行