当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>利用Windows虚拟设备驱动程序(VxD)之2</b>[VC/C++编程]

赞助商链接



  本文“<b>利用Windows虚拟设备驱动程序(VxD)之2</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

8、VxD初始化

VMM初始化一个VxD时做下列工作:

1、装载实情势初始化段并调用实情势初始化历程.该历程可以完成禁止装载VxD,禁止启动Windows,指定设备实例数据和在内存中挑选页面给

设备专用的工作.

2、装载VxD别的段到32位平展内存情势的保护情势内存,并丢弃实情势初始化段.

3、发送Sys_Critical_Init消息到设备掌握历程.禁止硬件中止,所以VxD应当尽大概地用较少的时间完成自身初始化.

4、发送Device_Init消息到设备掌握历程.答应硬件中止,所以必须预备让VxD管理来自设备的中止.

5、发送Init_Complete消息到设备掌握历程.

6、丢弃初始化代码和数据段,释放别的被利用的内存.VxD不能在处理完Init_Complete消息今后试图存取这些段中的历程和数据.

在初始化历程中的任什么时刻刻,VxD都可以设置进位标志返回到VMM以禁止装载VxD.部份VMM服务,比方初始化信息服务只在初始化历程中有效.

9、实情势初始化

任何静态设备驱动程序都可以供应实情势初始化历程以在Windows切换到保护情势之前履行初始化任务.VMM装载VxD时调用该历程,该历程查抄

有关的Windows环境,包含注册表和初始化文件中的有关设置以判断能否应当装载该VxD.该历程也可以给Windows返复书息认为每个虚拟机的实

例指定物理内存页保存给设备专用和数据项地址.要得到关于实情势初始化的更多信息,请参阅相关资料.

10、VxD服务

VxD可以供应服务功效(函数或历程——译者注)给VMM和别的VxD利用.这些服务让别的VxD可以直接拜候该VxD的特点,答应测试和改正该VxD的功效和本领.

VxD不能和Windows DLL一样引出函数,代之的是VMM通过INT 20H供应到VxD服务的动态链接,该中止处理历程利用服务编号判断支持服务的

VxD,该中止处理历程也利用服务编号查询在VxD服务表中的服务地址.

下面的内容报告怎样在VxD中定义服务,声明VxD服务表以及从一个VxD向另一个VxD中引入服务.

1、定义服务

VxD利用BeginProc和EndProc宏以及Service和Async_Service选项定义服务.宏标志服务历程代码的开始和完毕,选项标识该历程是一个服务.

下面的实例给出了VSAMPLED_Get_Version服务的定义:

BeginProc VSAMPLED_Get_Version, Service

mov ax, 030Ah

clc

ret

EndProc VSAMPLED_Get_Version

Async_Service选项标识该服务可以被异步伐用,也就是说在处理中止的历程中调用.异步服务必须是可重入的,并且不能调用VMM和不是异步服

务的VxD服务.

VMM和尺度VxD对服务利用两种调用约定:基于存放器的调用约定和基于32位C语言的调用约定.这两种调用约定有差别的服务名格局,参数传送

和返回值办法以及存放器保护.

关于基于存放器的服务,服务名不该该以下划线(_)开首,全部的参数通过存放器传送,后果也通过存放器返回,服务保护全部不显式用于返回

值的存放器.

关于基于C语言的服务,服务名必须以下划线(_)开首,全部的参数通过仓库中的32位值传送,后果(假如存在)通过EAX存放器(32位值)

大概EAX和EDX存放器(64位值)返回,服务保护EBX、ES、FS和GS存放器以及ESI和EDI存放器,只有标志存放器和EAX、EBX、EDX存放器被改正.


  以上是“<b>利用Windows虚拟设备驱动程序(VxD)之2</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .