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

http://tech.ddvip.com   2006年03月31日    社区交流

本文详细介绍使用Windows虚拟设备驱动程序(VxD)之2

  当一个应用程序调用该入口地址时,VMM保存该应用程序的寄存器并调用VxD相应的API过程,保存当前虚拟机的句柄到BX寄存器中并保存 

  Client_Reg_Struc结构地址到EBP寄存器中。API过程必须检测客户寄存器的值(使用Client_Reg_Struc结构)以判断运行的API调用。 

  按照常规,大多数API过程使用AH寄存器指定主功能号,使用AL寄存器指定次功能号,其它客户寄存器用于附加参数。API过程通过修改客户寄 

  存器返回值,API过程可以修改EAX、EBX、ECX、EDX、ESI和EDI寄存器。

  下面的实例给出了一个实例API过程——VSAMPLED_API_Get_Version: 

  BeginProc VSAMPLED_API_Get_Version 

  movzx eax, [ebp.Client_AX] ;取功能号 

  or eax, eax 

  jnz Undefined 

  Get_Version: 

  mov [ebp.Client_AX], 030AH ;在客户寄存器AX中返回值 

  and [ebp.Client_Flags], NOT CF_Mask ;清除进位标志 

  ret 

  Undefined: 

  or [ebp.Client_Flags], CF_Mask ;设置进位标志 

  ret 

  EndProc VSAMPLED_API_Get_Version 

  十二、VxD INT 2FH功能 

  VxD可以通过为INT 2FH中断安装回调过程提供INT 2FH功能。INT 2FH功能允许在一个虚拟机中运行的应用程序和其它软件在VxD不提供API过 

  程的情况下访问VxD,例如,标准虚拟显示设备支持与Windows显示驱动程序通信的INT 2FH功能集合。 

  Windows安装自己的INT 2FH中断处理程序支持各种功能,以允许MS-DOS 设备驱动程序和TSR在Windows启动或者虚拟机运行过程中执行特定动 

责编:豆豆技术应用

正在加载评论...