快速业务通道

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

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
动程序还声明一个设备标识和一些API过程。

VxD一般使用Declare_Virtual_Device宏来实现这些声明,例如:

Declare_Virtual_Device VSAMPLED, 4, 0, VSAMPLED_Control, \

VSAMPLED_Device_ID, VSAMPLED_Init_Order, \

VSAMPLED_V86_API_Handler, \

VSAMPLED_PM_API_Handler

本例声明了一个VxD实例——VSAMPLED V4.0,在对应的源文件必须定义名字为VSAMPLED_Control的设备控制过程。符号VSAMPLED_Device_ID和

VSAMPLED_Init_Order说明非标准VxD的标识和初始化顺序,该VxD支持V86模式和保护模式API过程。

VMM用宏定义的信息来初始化VxD并发送系统控制消息给VxD,并且允许MS-DOS应用程序、设备驱动程序和TSR调用VxD。为了使VMM存取这些信

息,相应的宏建立一个设备描述块(DDB)并将其保存在保护模式数据段中(DDB的格式与VxD_Desc_Block结构相同),宏为DDB建立了一个必须

在VxD连接时被显式引出的标号。在上例中,DDB的名称是VSAMPLED_DDB。

5、VxD标识(ID)

一个VxD提供一个VxD标识,以区别于其它VxD。VMM动态连接例程使用VxD标识为合适的VxD连接服务调用,如果VxD提供服务或者提供V86模式和

保护模式API过程以及其它需要唯一标识的情况,VxD就必须有唯一标识。虽然标准VxD使用预定义VxD标识(符号定义在VMM.INC文件中),支持

新设备和新软件接口的VxD还是必须全部有新标识。为了防止与其他新VxD冲突,Microsoft通过请求和注册标识来保证没有其它厂商使用自己的VxD

的标识,Microsoft保留0—01FFH之间的所有VxD标识自己使用。不提供服务或者API过程,或者不需要唯一标识的VxD应该使用Undefined_Device_ID符号来定义VxD标识。

6、初始化顺序

每一个VxD都有一个用于指定VMM应该何时初始化该VxD的初始化顺序值,VMM按照该值从小到大的顺序初始化虚拟机(VM——译者注)。如果两个或

者两个以上的VxD有相同的值,VMM会按照SYSTEM.INI文件中出现的顺序来初始化,但指定顺序是没有保证的。

对于需要调用其它VxD服务或者需要在其它VxD之前拦截中断的VxD,初始化顺序是很重要的。如果一个VxD需要在标准VxD之前或者之后初始化,

它的初始化顺序值应该通过在标准VxD预定义的初始化顺序符号(在VMM.INC文件中定义)上加上或者减去一个小数值来创建。

如果一个VxD不需要初始化顺序值,应该使用Undefined_Init_Order符号代替初始化顺序值。

7、设备控制过程

每一个VxD都有一个设备控制过程,VMM通过调用此过程给VxD发送VxD系统控制消息。系统控制消息指导VxD完成动作,例如自身初始化或者通

知VxD虚拟机的变化(例如创建虚拟机)等。大多数VxD通过使用Begin_Control_Dispatch、Control_Dispatch和End_Control_Dispatch

宏来定义设备控制过程,例如:

Begin_Control_Dispatch VSAMPLED

Control_Dispatch Sys_Critical_Init, VSAMPLED_Crit_Init

Control_Dispatch Device_Init, VSAMPLED_Device_Init

Control_Dispatch Sys_Critical_Exit, VSAMPLED_Crit_Exit

End_Control_Dispatch VSAMPLED

上例中,宏创建了一个名字为VSAMPLED_Control的设备控制过程,并生成了检查Sys_Critical_Init、Device_Init和Sys_Critical_Exit消息

的指令。当这些消息发送到该过程时,该过程通过控制相应的过程(例如SAMPLED_Crit_Init)来处理消息,这些消息处理过程必须在VxD中定义。

七、系统控制消息

VMM发送系统控制消息给VxD,以通知VxD影响系统和虚拟机的变化。大多数VxD需要跟踪虚拟机的创建和状态,所以无论何时创建、初始化或者

终止虚拟机,VMM都会发送消息给VxD。VMM也会在执行焦点移动到一个虚拟机或者从一个虚拟机移走时,以及虚拟外壳设备需要给用户显示一个消息框时发送消息给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号