snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1321回复:4

98下的虚拟光驱中读写扇区

楼主#
更多 发布于:2002-05-31 09:50
诸位可能已经知道做一个虚拟的磁盘PDR,假如是FAT或FAT32,
可以在内寸中模拟出他的磁盘信息,系统会依次读出信息,象RAMDISK,
但是在虚拟光驱中,怎么光驱的信息只在映象文件如ISO中,怎么办?

最新喜欢:

villeinvillei... zxzdqdkfwzxzdqd...
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-06-01 21:57
cdrom only support cdfs ( for extend driver, support udf).

the sector size is fix for isso9660 . 2048.

for cd-ma , mpeg2, the size of sector is a little different.
but never over 2352.

a standard iso file only support one session - one track format cdrom media.
it is arranged as 2352 * last_lba.

just think you media is a iso9660 form1 or form2 media.(no XA)

so if it ask data from Lba=n(from 0). you should get data from iso by shift 2352 * n. then skip first 16 bytes for data mode 1 ( skip first 24 bytes.for mode2)



[编辑 -  6/1/02 by  zdhe]
snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-01 22:16
iso及ISO文件我是比较了解了,不知道您有没有看过本站实现虚拟光驱的代码,汇编的,我和他做的原理相同,只不过我用C,
我的问题是在响应IOR_READ时候,我按ISO文件中逻辑顺序数据读给它
它并不能正常使用。比如它读0扇区我就把文件0--2048读给它,
在2000中就可以正常实现,不知道为什么
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-06-01 23:04
take care of data.
----------
so if it ask data from Lba=n(from 0). you should get data from iso by shift 2352 * n. then skip first 16 bytes for data mode 1 ( skip first 24 bytes.for mode2)

----------


and i think win2k does not support mpr(LE format).
the realizatin must be quite diffirent.you can not simplely compare win2k driver and win9x driver.


snowstone
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2005-09-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-03 10:29
谢谢您的答复,我和本站的虚拟光驱一样的实现,我还是有几点不明白,
1,按理论,9X下的的文件系统里,CD最下面是MPD,它的上层有CDFS,但是我不了解
系统依据什么来把的驱动放到CDFS之下,是在声明设备里DRP_MISC_PD?还是因为
指定类型DCB_type_cdrom?
2,我用C实现的一样的PDR,在IOR_READ时候它只是读0,1,6扇区,和FAT类似,
但是在ISO镜象文件中,前16个扇区数据都是0,我不知道给它什么数据,
3,在得到的IOR_GEN_IOCTL中只有0X440D的及DOS21中断,没有代码中的CD_**
之类的请求,不知道为什么?

谢谢您!
游客

返回顶部