使用Windows虚拟设备驱动程序(VxD)之1
动程序还声明一个设备标识和一些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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |