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

C++语言的VxD与外界通信的全部接口[VC/C++编程]

赞助商链接



  本文“C++语言的VxD与外界通信的全部接口[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1、 什么是VxD

从多任务操作系统Windows 3.1起,计算机中的任一物理设备x可同时被基于Dos或Windows的多个进程利用,这种一对多的关系称为"设备虚拟化",各进程通过运行在核心层的VxD(虚拟x设备驱动程序)存取物理设备x.操作系统供应利用户的软件服务也可以用VxD实现.计算机中的其他资源,如CPU、内存等也可同时被多个进程利用,各进程在系统供应的虚拟机(VM)环境下存取这类资源.

VxD可由虚拟机管理器(VMM)在开机时装入核心层(称静态装入,即置VxD于c:\windows\system目录下,在c:\windows\system.ini文件中,对节[386Enh]加一行"device=此VxD文件名"),或由利用程序及时装入(称动态装入),此后,各进程便可存取锁定在内存中的VxD数据区,以及时掌握VxD的行为,VxD的内部构造可避免两个进程同时存取其数据区.VxD通过呼应VMM发给它的事件与外界交互.

Windows 95中,基于Dos的每个进程在单独的VM中运行(称在V86情势下运行),既可按Dos单进程方法,在640k低内存中运行(称在实情势下运行),又可操纵多进程环境的长处,在整个内存中运行(称在保护情势下运行),通过95的DPMI接口存取内存高端的Windows图形环境.其他16位或32位利用程序均在同一系统VM中运行.

下面只谈论95环境下的VxD.

2、 VxD的成立

1. 由汇编语言成立VxD:需安装微软公司的Win32 SDK及DDK.

2. 由C或C++语言成立VxD:需安装VC2.0或BC4.0,及Vireo Software公司的VToolsD软件包.

VToolsD含3个实用工具:可成立VxD框架的QuickVxD;可动态装卸VxD的VxD Loader;可显示内存VxD特点的VxD Viewer.

QuickVxD含7个对话页:

(1) Device Parameters页

包含最多8个字符的VxD名,唯一标识号(ID),相对其他VxD的装入次序(VxD Viewer可显出某VxD的装入次序值Init Order,若指定新VxD的装入次序小于此Init Order,则新VxD将在此VxD前被装入),实现语言(C或C++)静、动态装入方法等.

(2) VxD Services页

可被其他VxD拜候的接口(称为VxD服务),要求本VxD的ID>0,且未与内存各VxD的ID值冲突.

此ID可向微软公司申请,也可以利用Vireo公司的VIREO_TEST_ID(3180h).下称此类ID为接口ID.

(3) API页

可被利用程序在实情势/V86情势下、保护情势下、DPMI的实情势/V86情势下、DPMI的保护情势下拜候的接口(统称利用接口),前二者要求本VxD供应接口ID,后二者只要求本VxD供应以0末尾的唯一标识串;拜候前,先要静态或动态装入本VxD(第4者要求静态装入).

第1、3者可被普通汇编程序拜候,第2、4者可被在BC的Windows 3-x(16)平台上生成的Windows程序拜候.

(4) Control Messages页

对呈目前Windows 3.1及Windows 95中各消息的呼应,如静态装入时的DTNAMIC_INIT消息.

(5) Windows95 Control Messages页

对只呈目前Windows 95中各消息的呼应,如动态装入时的SYS_DYNAMIC_INIT消息.

(6) 用C++实现VxD时的Classes页

从虚拟设备驱动程序类VDevice派生的类名(如MyDevice),此类的成员函数将接纳(4)及(5)页中呈现的大大都消息.

从VM实例类VVirtualMachine派生的类名(如MyVM),此类的成员函数将接纳贯串在VM生命期中的各消息,如系统VM初启消息Sys_VM_Init;

从线程实例类VThread派生的类名(如MyThread).此类的成员函数将接纳贯串在线程生命期中的各消息,如新线程初启消息THREAD_INIT.

(7) Output Files页

表现以上内容的3个VxD文件(.h,.c或.cpp,.mak)将被存放的目录位置.


  以上是“C++语言的VxD与外界通信的全部接口[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Ubuntu下面的C语言代码查抄工具Splint
  • C语言本领学习c++经验50条7
  • C语言本领学习c++经验50条8
  • C语言本领学习c++经验50条9
  • C语言本领学习c++经验50条10结束
  • DDBC语句分类
  • <b>linux下C语言实现ARP数据包发送</b>
  • Java通过JNI调用C语言的办法
  • 在Delphi编程中利用C语言代码
  • 基于Oracle OCI的数据拜候C语言接口ORADBI-开辟技术
  • C语言之 插入排序的改良
  • C语言实现端口扫描
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

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

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