K518信息网

VxD程序的初始化和结束的控制消息

发布时间:2019/8/5 10:50:06 信息编号:43143511
[举报此信息]

会员身份:swkj0

联系人:盛网科技

单位名称:

联系电话:400-090-0901 点击拨打

所在城市:广东 >> 广州

联系邮箱:Service@33ol.com

联系我时请说明是从K518信息网看到的,这样我会给你很大的优惠!

  VxD程序分为两种:静态的和动态的。每种的加载方法都不同,接受到的初始化和结束的控制消息也不同。?

  静态VxD:?

  下列情况下,VMM加载一个静态VxD:?

  一个实模式常驻程序通过调用中断2FH,1605H,来调用此VxD。?

  此VxD在注册表中的如下位置有定义:?

  HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\VxD\\key\\StaticVxD=VxD带路径文件名?

  此VxD在system.ini中的[386enh]行下有定义:[386enh]?section:?

  device=VxD带路径文件名?

  在开发的时候,我建议你从system.ini载入VxD程序,因为这样如果你的VxD程序有错而导致Windows不能启动的话,你可以在Dos下修改system.ini,而如果你使用的注册表载入的办法,就无法修改了。?

  当VMM加载你的静态VxD程序时,你的VxD程序会按以下顺序接收到三个系统控制消息:?

  Sys_Critical_Init?VMM在转入到保护模式后,开放中断前发出这个控制消息。大多数VxD程序到不要用到这个消息,除非:?

  你的VxD程序要接管一些其他VxD程序或者保护模式程序要用到的中断。既然你处理这个消息的时候这个中断还没有打开,你就可以确定在你接管这个中断的时候此中断不会被调用。?

  你的VxD程序为其他的VxD程序提供了一些VxD服务。例如,一些在你的VxD程序后加载的VxD程序在处理Device_Init控制消息时需要调用一些你的VxD服务,既然Sys_Critical_Init?控制消息在Device_Init消息之前被发送,所以你应该在Sys_Critical_Init?消息发送时初始化你的程序。?

  如果你要对这消息进行处理,你应该尽可能快的做完初始化工作,以免太长的执行时间导致的硬中断丢失。(记住:中断还没打开)?

  Device_Init?VMM在开放中断后发送此信息。大多数VxD程序都在得到这个消息时初始化。因为中断都开放了,所以耗时的操作也可以在这里执行而不必怕会导致硬中断的丢失。你可以在这时进行初始化(如果你需要的话)。?

  Init_Complete?在所有的VxD程序处理完Device_Init?消息之后,VMM释放初始化段(ICODE和RCODE段类)之前,VMM发出这个控制消息。只有少数几个VxD要处理这个消息。?

  你的VxD程序在成功地初始化后,必须将返回标志清零,反之,必须在返回之前把返回标志设为出错信息。如果你的VxD不需要初始化,你就不必对这些消息进行处理。?

  当要结束静态VxD的时候,VMM发送如下的控制消息:?

  System_Exit2?当你的VxD程序收到这个消息,Windows95正在关闭系统,除了系统虚拟机所有其他虚拟机都已经退出了。尽管如此,CPU仍然处于保护模式下,在系统虚拟机上执行实模式编码也是安全的。在这时Kernel32.dll也已经被卸载了。?

  Sys_Critical_Exit2?当所有的VxD完成对System_Exit2的响应处理并且中断都被关闭后,你的VxD收到到这个消息。?

  服务器租用、托管,只有您想不到的,没有我们做不到的,只要您选择了我们三三在线http://www.33ol.com/,我们就会竭诚为您服务!!!。企点Q:2852361322电话:13924367540

幸运飞艇五码二期计划