[讨论] 1.虚拟设备驱动程序初步
在本教程里,我假定读者对诸如虚8086模式,调页,GDT,LDT,IDT之类的INTEL 80x86保护模式的操作比较熟悉。如果你不了解这些,那你要先在 http://developer.intel.com/design/pentium/manuals/阅读INTEL的文档。
内容:Windows95是一个运行在最高级特权,第0层级别的多线程操作系统。所有的应用程序都运行在最低级特权,第3层级别上。这样就限制了 什么是一个虚拟机?一个虚拟机是被软件创建的一个假象。一个虚拟机和在它上面运行的程序交互,就像这个程序是在真正的机器上运行一样。这样,一个程序不知道也不关心自己是否是在虚拟机上运行。只要虚拟机准确的像一个真的机器一样响应程序,我们就可以把它当成一个真正的机器。 虚拟机管理器VMM是一个32位的保护模式程序。它的主要任务是建立和维护一个支持虚拟机的框架。例如,它要创建,运行和结束一个虚拟机。VMM是众多的系统VxD程序之一,它被放在你的系统目录下的VMM32.VxD文件中。VMM本身是一个VxD程序,但它被当作一个监视其他VxD程序的监视器。让我们来看一下Windows95的启动次序: 虚拟设备驱动程序虚拟设备驱动程序被简称为VxD。x 代表各种设备的名字,如虚拟键盘驱动程序(vkd),虚拟鼠标驱动程序(vmd)等等。VxD程序是硬件成功初始化的途径。记得dos程序认为它们拥有系统的一切,当它们在虚拟机中运行时,Windows需要给它们一个实机器的替身。VxD程序就是这些替身。VxD程序通常虚拟一些硬件设备,所以,例如当一个dos程序认为它在同键盘通讯时,实际是虚拟键盘驱动程序在和dos程序通讯。一个VxD程序通常控制真正的硬件设备并对该设备在各个虚拟机之间的共享进行管理。 VxD程序之间的通讯VxD程序,包括VMM,通过以下三种途径在相互之间进行通讯: 控制消息: 当有VMM感兴趣的事件发生时,它就向系统中所有载入的VxD程序发送控制消息。控制消息就像是第三层级别的Windows应用程序的消息。每个VxD程序都有一个接受和处理控制消息的函数,叫做设备控制函数。系统控制消息总共有50多个。控制消息不多的原因是系统中通常加载了很多VxD程序,而每个VxD程序在收到一个控制消息时都要进行处理。如果控制消息太多,就会导致系统停滞。所以控制消息只包括那些与虚拟机有关的重要消息,如:一个虚拟机被创建,被销毁等等。作为对系统控制消息的附加,一个VxD程序可以定义自己的控制消息,这些消息可以用来和那些能响应这些消息的VxD程序通讯。 服务函数: 一个VxD程序,包括VMM在内,通常要导出一系列的被别的VxD程序调用的公共函数,这些函数被称为VxD服务。调用这些服务的机制和在第三层级别运行的的应用程序有很大的不同:每个导出VxD服务的VxD程序必须有一个唯一的ID,你可以从Microsoft得到一个这样的ID。这个ID是一个包含了一个VxD唯一的身份验证的16位的数字,例如: UNDEFINED_DEVICE_ID EQU 00000H 这个帖子是我转的·原文来自 外挂作坊 |
[讨论] 1.虚拟设备驱动程序初步相关推荐
- 学习构建WDF驱动程序 - 初步了解SOURCE和makefile文件
接此:https://blog.csdn.net/bcbobo21cn/article/details/112074021 在WDK的示例目录下构建出一个.sys驱动程序: 下面来构建自己的驱动程序: ...
- usb驱动程序初步编写
今天我们的目标是将USB鼠标用做按键 比如说左键按下就相当于字母L 右键按下就相当于字母S 滚轮按下就相当于回车 相当于一个输入子系统,怎么做呢?? 1.分配一个input_device结构体 2.设 ...
- 编程王 kingofcoders.com
欢迎您 频道 Java .net c++ php VB SQL Server PostgreSQL 开源 Solaris BSD Linux Microsoft Mysql Oracle Bo ...
- Win32程序设计初步之线程
线程是Win32 API中最为令人激动和有用的特性之一.线程可让你将一个程序分解成多个 线程来执行.在这篇文章中你将学习到在Win32程序中创建线程的基本概念. 可能用到线程的地方 在你的程序中,有不 ...
- WDM内核驱动程序模型分析
WDM内核驱动程序模型分析 WDM驱动程序是Windows 2000操作系统重要的组成部分,它的正常工作需要有Windows 2000其它内核组件的支持,同时大部分的内核组件也必须同WDM驱动程序交 ...
- PCI设备WINDOWS驱动程序的开发
PCI设备WINDOWS驱动程序的开发 摘要:本文主要介绍了在Windows9x操作系统下开发PCI设备驱动程序的方法. 关键词:PCI设备 驱动程序 PCI设备概述 近几年来,随着诸如图形处理.图像 ...
- 写一个块设备驱动程序
----------------------- Page 1----------------------- 第 1章 +---------------------------------------- ...
- 基于Windows8与Visual Studio11开发第一个内核驱动程序
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Wind ...
- 基于Windows8与Visual Studio11开发第一个ring3驱动程序
Windows 驱动程序的发展演变 我们在学习开发驱动程序时有必要弄清楚Windows设备驱动程序的发展演变过程(为了简便起见,以下简称驱动程序),以便明白我们将要开发什么样的驱动程序.这就象你开发一 ...
- 智能化软件开发微访谈·第二十四期 大模型时代的智能化软件生态(讨论汇编)...
CodeWisdom "智能化软件开发沙龙是由CodeWisdom团队组织的围绕智能化软件开发.数据驱动的软件开发质量与效能分析.云原生与智能化运维等相关话题开展的线上沙龙,通过微信群访谈交 ...
最新文章
- 微软亚洲研究院副院长刘铁岩:以计算之矛攻新冠之盾
- SQL Server select into 用法
- excel vba基础入门_[VBA][基础入门] 第3讲 认识VBA IDE(集成开发环境)
- 树转换为二叉树小技巧
- 基于django的视频点播网站开发-step11-后台用户管理功能...
- java jtable不可编辑_java – 使JTable单元不可编辑
- UWP ListView 绑定 单击 选中项 颜色
- 重学C---------第五节:常量
- 分享几个vue后台模板
- 《数据结构C语言版》
- Android图片剪裁库:uCrop
- MRP里如何预测lead time :Approaches for the Prediction of Lead Times in an Engineer to Order Environment
- K8S---多节点部署---基于单节点(5)
- java 加背景颜色_Java 给PPT幻灯片添加背景颜色和背景图片
- 1038: 顺序表中重复数据的删除
- 基于javaweb+SSM校园招聘平台招聘管理系统(平台、企业、用户)
- 北京地铁,把什么丢了?
- 连连跨境支付独立站收款,最高90天提现0费率!
- MIT 黑科技:通过脑电波和手势控制机器人
- Makfile: [ GCC编译选项 ] >CFLAGS参数 -c -o
热门文章
- XCAP发包工具的使用
- 用 DocFetcher 全文搜索
- wincc连接mysql数据库说明_wincc 数据库的连接方法
- Win10升级后,文件夹背景变成黑色
- 二分插入排序(c语言)
- 华为交换机链路聚合使用ENSP模拟器进行实验
- 转~解决VS2017 C++无法打开源文件 WinSock2.h Windows.h mswsock.h Ws2tcpip.h
- 机器人动力学与控制学习笔记(二)————机器人动力学建模
- win10自动停用打印服务器,win10系统添加打印机总是自动关闭打印服务的技巧介绍...
- 电商后台项目 + 源码