基于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.comstatus=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设备的驱动程序框架,大大加快了开发周期,提高了开发效率。
《基于PCI总线的实时测频卡WDM驱动程序设计》相关文章
- › 基于PCI总线的实时测频卡WDM驱动程序设计
- › 基于PCI9054的接口卡
- › 基于PCI总线芯片CH365的数据密码卡设计
- › 基于PCI Express总线的雷达数据记录器驱动程序开发
- › 基于PCB油墨高效自动搅拌技术
- › 基于PCI总线和DSP芯片的图像处理平台的硬件设计
- 在百度中搜索相关文章:基于PCI总线的实时测频卡WDM驱动程序设计
- 在谷歌中搜索相关文章:基于PCI总线的实时测频卡WDM驱动程序设计
- 在soso中搜索相关文章:基于PCI总线的实时测频卡WDM驱动程序设计
- 在搜狗中搜索相关文章:基于PCI总线的实时测频卡WDM驱动程序设计