快速业务通道

使用Windows虚拟设备驱动程序(VxD)之1

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
,设备控制过程,处理系统控制消息过程的基本部分和API过程的基本部分的VxD框架。

2、加入实模式初始化过程(可选)。

3、完成处理初始化消息的过程。这些过程应该能够初始化控制块,分配全局内存以及安装中断、I/O捕获和页错误回调过程。

4、完成处理不同中断和错误的回调过程。

5、为服务加入服务表定义和声明(可选)。

6、完成API过程(可选)

7、完成处理系统控制消息的过程以建立和删除虚拟机。

在写一个VxD的过程中,你可以安装该VxD并在调试器控制下运行Windows,在该VxD中设置断点监视该VxD管理的中断,这样可以帮助你查明该VxD是否正确工作。

1、VxD段

VxD可以包含下面5个段的一些组合:

1、VxD_CODE段:保护模式代码段(必须)。该段包含VxD系统控制过程、回调过程、服务和API过程。该段用宏VxD_CODE_SEG和VxD_CODE_ENDS

定义开始和结束,也可命名为_LTEXT。

2、VxD_DATA段:保护模式数据段(必须)。该段包括设备描述表、服务表和部分VxD全局数据。该段用宏VxD_DATA_SEG和VxD_DATA_ENDS定义开

始和结束,也可命名为_LDATA。

3、VxD_ICODE段:保护模式初始化代码段(可选)。该段一般包括只在VxD初始化过程中使用的过程和服务,VMM在Init_Complete消息发生后丢弃

此段。该段用宏VxD_ICODE_SEG和VxD_ICODE_ENDS定义开始和结束,也可命名为_ITEXT。

4、VxD_IDATA段:保护模式初始化数据段(可选)。该段一般包括初始化过程和服务使用的数据,VMM在Init_Complete消息发生后丢弃此段。该

段用宏VxD_IDATA_SEG和VxD_IDATA_ENDS定义开始和结束,也可命名为_IDATA。

5、VxD_REAL_INIT段:实模式初始化段(可选)。该段包含实模式初始化过程和数据,VMM在装载VxD其它部分之前调用此过程,过程返回后丢弃

此段,该段用宏VxD_REAL_INIT_SEG和VxD_REAL_INIT_ENDS定义开始和结束,也可命名为_RTEXT。

除实模式初始化段以外,所有代码和数据段均为32位平坦内存模式的保护模式段,这就是说定义在保护模式段中的过程和数据均为32位的偏移

量。当VMM装载VxD时,按照VxD在内存中的实际位置修正所有的偏移量。因此,在保护模式段中使用普通OFFSET命令(伪操作,下同——译者注)

处应该使用OFFSET32宏,OFFSET32宏定义的偏移量为连接器确定了正确的偏移量修正信息。

VxD不能改变CS、DS、ES和SS段寄存器,VxD能够使用FS和GS段寄存器。

2、保护模式指令

VxD的源程序文件必须以.386p命令开始,以通知汇编器允许保护模式指令。虽然VxD工作在0特权级,但也不应该用保护模式指令去修改CPU的

运行,例如修改全局描述符(选择子——译者注)或中断描述符以及修改任务状态段或寄存器,这样做可能会对Windows运行有不利影响。唯一的

例外情况是当该VxD为虚拟数学协处理器设备驱动程序(VMCPD),允许修改CR0寄存器中的80387位。

3、包含(Include)文件

包含文件定义了VxD需要的宏、结构、符号和服务表,用于声明段和过程以及使用VMM和其它VxD服务。下面是每个包含文件包含的公共服务定义、

宏和符号定义列表:

1、VMM.INC:包含所有的VMM服务以及所需的宏和符号,例如Declare_Virtual_Device和VMMCall。

2、DEBUG.INC:包含在调试终端上输出信息和执行各种数据检查的宏。这些宏的功能由定义了调试符号的VxD在汇编时该文件生成的代码实现。

3、VPICD.INC:包含为虚拟可编程中断控制器设备(VPICD)定义的所有服务、宏和符号。VPICD处理所有的中断,所以许多VxD需要VPICD服务。

4、SHELL.INC:包含虚拟外壳设备提供的公共服务的定义。虚拟外壳设备提供对例如MessageBox这样的Windows函数的调用,可以让VxD显示对话框。

4、VxD声明

每一个VxD都要声明一个名称、一个版本号、一个初始化顺序和一个设备控制过程,许多虚拟设备驱

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号