好文档 - 专业文书写作范文服务资料分享网站

PCI设备Windows通用驱动程序设计

天下 分享 时间: 加入收藏 我要投稿 点赞

成。

PCI设备驱动程序应当从PCI配置寄存器的中断寄存器(INTLN)和中断引脚 寄存器(INTPIN) 中获得有关中断的信息。DDK还提供了响应中断事件的服务。 如在 Windows 95 中,VPICD服务用来管理所有硬件中断事件。PC机的硬件中 断需要确定硬件中断的IRQ ,对一个特定的IRQ中断源,VPICD或者提供缺省 的中断处理函数,或者允许其它VxD重载中断处理函数。在VtoolsD 中,要处 理硬件中断应该从VHardwarel nt 写中断响应程序所需的功能。

在 Windows NT 中,同VPICD对应的中断服务为中断请求层(IRQL)。设备 驱动首先使用HalGetlnterrupuVector

中断向量,然后利用IoConnectInterrupu

将与总线有关的中断向量转换为系统的

指定中断服务。

继承一个类。在这个类中,VtoolsD 提供了编

3 设备驱动的调用

编写设备驱动并不是最终的目的,总是需要由用户程序来调用驱动并实现 一定的功能。一般调用设备驱动是使用CreateFile 函数打开设备文件,得到 一个文件句柄。具体到我们的设备驱动程序中,使用如下的语句就可以打开文 件。

hVxD=CreateFile(\CREATE-NEW,FILE-FLAG-DELETE-ON-CLOSE,0); 打开设备文件后,调用DeviceIoC ontrol 数据了。

完成硬件操作之后,可以调用CloseHa ndle(hVxD)

;关闭设备驱动。

函数就可以同设备驱动程序交换

这种调用方式也是Win dows NT调用设备驱动的标准方法。对于VxD来说 还有其它的调用方式,女口 DPMI方式,但采用DeviceIoC ontrol 的方法可以保 证程序在 Windows NT 和 Windows 9X 下的兼容性,在两个操作系统下,仅有 CreateFile 语句是不同的。

4设备驱动的进一步封装

至 此 ,完 成 了 对 驱 动 程 序 的 初 步 设 计 。但 考 虑 到 在 上 面 调 用 设 备 驱 动 时 使 用 的 DeviceIoControl 函 数 仍 是 比 较 复 杂 的 ,程 序 也 不 太 容 易 具 有 通 用 性 。而 且,在 有些开 发工具 中,如 Visual Basic ,不包 括直接 读写 I/O 端口的 语句, 所以可以考虑根据不同软件的需要对驱动程序进行不同的封装。目 前,我 们实 现了以DLL、ActiveX 、VCL和C++类库进行封装。DLL可以在大多数软件环境 中进行调用。ActiveX 可以在Visual Basic 等可视编程环境中使用。VCL可以 在 Delphi 和 C++ Builder 中使用 。 考虑到许多用户使用 Visual C++ ,所以也 提供了 C++类库方式。

(编辑 keil )

PCI设备Windows通用驱动程序设计

成。PCI设备驱动程序应当从PCI配置寄存器的中断寄存器(INTLN)和中断引脚寄存器(INTPIN)中获得有关中断的信息。DDK还提供了响应中断事件的服务。如在Windows95中,VPICD服务用来管理所有硬件中断事件。PC机的硬件中断需要确定硬件中断的IRQ,对一个特定的IRQ中断源,VPICD或者提供缺省的中断处理函数,或者允许其它VxD重载中断处理
推荐度:
点击下载文档文档为doc格式
88b6782srm0zdc523xwm17c19373ml00gpo
领取福利

微信扫码领取福利

微信扫码分享