3943|1

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求虚拟光驱编程思路! [复制链接]

我想用MFC编一个虚拟光驱的程序,但是无从下手,哪位高手能介绍一下它的编程思路吗?谢谢了!

最新回复

(zz) 虚拟光驱技术基本探究 作者:未知    文章来源:佚名    点击数:    更新时间:2007-8-12 现在网上所流行的虚拟光驱软件也越来越多了比如说Deamon Tools ,Alcohol 120%,PowerISO,碟中碟3等。也算是各有所长,这篇文章主要是来探究虚拟光驱的技术。       首先,虚拟光驱是运行在Windows层面上的,是在Windows启动后加载驱动,在SYSTEM32下的的低层驱动加载后实现一个或多个虚拟出来的光驱。       对于Windows系统而言,在Win32层面上的软件并没有对硬件的控制和调用权限,因为Windows并没有直接去写硬件,而是通过系统内核(Kernel)作为交换层来实现对硬件的操作,在Windows的Kernel中,提供了最大限度的硬件抽象概念,把控制硬件相关的内核驱动等进行了封装,并提供API接口来调用,对于硬件设备的I/O处理和数据流传输交换,Windows平台中提供了一个接口框架,而具体的操作流程控制则是有驱动来完成的。使用I/O管理器在Kernel中注册的驱动并使用IRP数据包来进行管理的。虚拟光驱的原理就是向Kernel中注册一个虚拟的驱动程序来实现的。 我们都知道Windows中使用了“消息”这一数据进行各程序间的通讯的。在Kernel上Windows使用的I/O控制码(IOCTL)来实现对内核与驱动之间的数据流和控制流的传输。 这是一个CD-ROM的IOCTL定义代码: 引用: IOTCL_CDROM_GET_DRIVE_GEOMETRY    /*获取光盘的物理架构*/ IOTCL_CDROM_GET_LAST_SESSION        /*取得光盘的最后一个区短*/ IOTCL_CDROM_CHECK_VERIFY            /*检查光盘介质*/ IOTCL_CDROM_CLOSE-DOOR              /*光盘进驱*/ IOTCL_CDROM_RAW-RWAD                /*以RAW数据的方式读去光盘*/ IOTCL_CDROM_READ_TOC                  /*获取光盘存储结构*/ IOTCL-CDROMREAD                        /*读去光盘*/在现在的虚拟光驱中,组成的方式是这3步: 1.内核驱动 2.微端口过滤驱动 3.驱动文件系统过滤     在微端口过滤中,目的是来欺骗系统内核总线ATAPI.SYS的.有的虚拟光驱是自定义总线驱动的,在驱动文件过滤中,主要是来读取特殊的光盘数据架构和光轨架构.光盘文件过滤是一种特殊类型的驱动,它的作用是针对光盘数据格式的读写来进行规范和定义的,目前常见的光盘文件系统是ISO9660文件体系,在Windows层中有直接的系统函数支持,并不需要在来写文件支持.而是调用相关的API.   详情 回复 发表于 2007-10-24 21:31
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
(zz)
虚拟光驱技术基本探究
作者:未知    文章来源:佚名    点击数:    更新时间:2007-8-12
现在网上所流行的虚拟光驱软件也越来越多了比如说Deamon Tools ,Alcohol 120%,PowerISO,碟中碟3等。也算是各有所长,这篇文章主要是来探究虚拟光驱的技术。
      首先,虚拟光驱是运行在Windows层面上的,是在Windows启动后加载驱动,在SYSTEM32下的的低层驱动加载后实现一个或多个虚拟出来的光驱。
      对于Windows系统而言,在Win32层面上的软件并没有对硬件的控制和调用权限,因为Windows并没有直接去写硬件,而是通过系统内核(Kernel)作为交换层来实现对硬件的操作,在Windows的Kernel中,提供了最大限度的硬件抽象概念,把控制硬件相关的内核驱动等进行了封装,并提供API接口来调用,对于硬件设备的I/O处理和数据流传输交换,Windows平台中提供了一个接口框架,而具体的操作流程控制则是有驱动来完成的。使用I/O管理器在Kernel中注册的驱动并使用IRP数据包来进行管理的。虚拟光驱的原理就是向Kernel中注册一个虚拟的驱动程序来实现的。
我们都知道Windows中使用了“消息”这一数据进行各程序间的通讯的。在Kernel上Windows使用的I/O控制码(IOCTL)来实现对内核与驱动之间的数据流和控制流的传输。
这是一个CD-ROM的IOCTL定义代码:
引用:
IOTCL_CDROM_GET_DRIVE_GEOMETRY    /*获取光盘的物理架构*/
IOTCL_CDROM_GET_LAST_SESSION        /*取得光盘的最后一个区短*/
IOTCL_CDROM_CHECK_VERIFY            /*检查光盘介质*/
IOTCL_CDROM_CLOSE-DOOR              /*光盘进驱*/
IOTCL_CDROM_RAW-RWAD                /*以RAW数据的方式读去光盘*/
IOTCL_CDROM_READ_TOC                  /*获取光盘存储结构*/
IOTCL-CDROMREAD                        /*读去光盘*/在现在的虚拟光驱中,组成的方式是这3步:
1.内核驱动
2.微端口过滤驱动
3.驱动文件系统过滤
    在微端口过滤中,目的是来欺骗系统内核总线ATAPI.SYS的.有的虚拟光驱是自定义总线驱动的,在驱动文件过滤中,主要是来读取特殊的光盘数据架构和光轨架构.光盘文件过滤是一种特殊类型的驱动,它的作用是针对光盘数据格式的读写来进行规范和定义的,目前常见的光盘文件系统是ISO9660文件体系,在Windows层中有直接的系统函数支持,并不需要在来写文件支持.而是调用相关的API.
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表