备,它们是蹦Ⅷ妇时(驱动程序主人口例程)、胁v池(添.PDFVIP

  • 1
  • 0
  • 约1.07万字
  • 约 3页
  • 2017-06-07 发布于湖北
  • 举报

备,它们是蹦Ⅷ妇时(驱动程序主人口例程)、胁v池(添.PDF

第22卷第l期 计算机应用 Vol 22.Nol 2002年1月 CoⅢputer ApplicadollS Jall..2002 文章编号:100l一9081(2002)1—0030一02 在windows 2000平台上实现vB对I/0端口操作 陆志才,商艳莉 (南开大学计算机科学与技术系,天津300071) 摘要:开发一个基于I/O端口操作的设备驱动程序,再编写一个动态链接库。从而可使windows 2000平台上的VB也能对I/O端口进行操作。文中就此介绍编写动态链接库时涉及到的关键问题, 并给出了部分源代码。 关键词:w.mdows 2000;VB;互/0端口操作;设备驱动程序;动态链接库 中图分类号:开316.7文献标识码:A 不同层次的若干驱动程序组成。当在用户态发一个L/O请 l 问题的提出 求,L,o管理器将形成一个∽请求包Ⅱ啦。在内核态,IRP首 由于Win古嘲2∞O具有很好的稳定性,促使人们试图将 先被送到最上层的驱动程序,然后被依次下传。各层对mP 原先基于Wjnd呻悒9x平台的vB测控软件移植到Wind∞幅 的处理取决于设备以及mP所携带的内容。每层驱动程序分 2∞0平台上,或在wirxhB 2∞o平台上开发新的测控软件。 别使用一个统称为设备对象的数据结构,这些设备对象在一 然而w,I|a怖2∞o对多种硬件平台的支持,使得在用户程序 起构成了一个设备对象堆栈。除了IRP和设备对象外,wDM 或动态链接库中已不能直接使用矾、oUT指令或最终要编译 还使用驱动程序对象、资源表、I/O栈单元等多种数据结构。 成矾、OuT指令的c函数,和L/0端口打交道只能调用硬件抽 —个完整的wDM驱动程序好比一个“容器”,它包含许 象层(}IAL)函数(如READ一嗍LucHAR、wⅢ吐P(珏H—多例程。当操作系统初始化驱动程序时或遇到一个mP时, ucHAR等)。而硼-山啊2∞o的安全机制叉不允许在用户态 就调用这个容器中相应的例程。这个容器中的例程是与驱动 直接调用HAL函数。注意到铡控系统中大多数A/D、D/A、 程序的功能密切相关的。例如.为了支持中断.需要有 DI、D0、脉冲量输M禽出等过程通道接口板都是基于L/0端 O山e咖pt例程和DPc例程。为了支持DMA操作,需要有 口操作的.因此。无论是移植,还是新开发都需要解决同一个 ^d日pte吒onⅡoa例程。但是有三个例程对所有驱动程序都是必 同题,即在w砌D惦2000平台上如何使Ⅶ能对L,o端口进行备的,它们是蹦Ⅷ妇时(驱动程序主人口例程)、胁v池(添 操作, 加设备倒程)和DigD瞰c|如P(即插即用派遣例程)。根据所要 完成的功能,除了必备的三个外.我们还安排了四个倒程。它 2解块的思路 们是打开设备倒程cr恻吧,关闭设备例程a雠,具体实现对端 解决上述问题的基本思路是,先开发一个基于L,O端口 口操作的例程‰D“矾n

文档评论(0)

1亿VIP精品文档

相关文档