无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3980|回复: 6
打印 上一主题 下一主题

U启新探索之三:USBCD.SYS的致命bug

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-4 19:55:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
..............................................

(本贴内容,未经许可,请勿转贴、引用、盗用,谢谢合作!)

松下的USBCD.SYS应是最常见的USB-CD for DOS驱动,其典型应用就是一键GHOST。
(IBM的USB_CD.SYS,我推测其编程采用的应是私有函数、只支持特定CD-ROM,
通用性不理想,所以不予考虑)

实践表明,有些主控盘量产出的CD不能被USBCD.SYS支持,原因何在?

一、致命的bug

我们知道:
UT16X主控盘,其正常量产出的CD,物理排列位置在后面,即Lun1位置;
SK6211主控盘,其量产较灵活,能够实现把CD位置排在最后一区,即Lun1或Lun2位置。

试想一下,如果只支持Lun0,而不支持Lun1、Lun2这些位置,那后果很显然:上面那些
USB-CD不可能被识别。很不幸,
USBCD.SYS就是这样,它只支持Lun0位置的CD! 对量产
USB-CD而言,这一bug是致命的,也是产生兼容性问题的原因之一。


二、bug成因推测

推测原因有2个:

1、松下真正的USB-CDROM,其控制器应是单一Lun0,不存在Lun1-7的情形,所以不需要做
Multi-lun考虑也能正常使用;

2、受到ASPI规范CD-ROM识别范例代码的误导。

查阅ASPI标准,可从中找到下面CD-ROM识别范例代码:

...scans the system for all CD-ROM drives (all targets must be at
LUN #0).

if( srbGDEVBlock.SRB_DeviceType == DTYPE_CDROM )
{
// A CD-ROM exists at HA/ID/LUN = byHaId/byTarget/
0.
// Do whatever you want with it from here!
}
...

它把Lun内定为#0了!


[ 本帖最后由 wuwuzz 于 2009-3-4 20:04 编辑 ]

评分

参与人数 1无忧币 +8 收起 理由
fujianabc + 8 精品文章

查看全部评分

2#
发表于 2009-3-4 21:06:26 | 只看该作者
呵呵,好像看过了~~~~~~~~~~~~
回复

使用道具 举报

3#
 楼主| 发表于 2009-3-5 10:41:15 | 只看该作者
原帖由 魔罗 于 2009-3-4 21:06 发表
呵呵,好像看过了~~~~~~~~~~~~




这个系列的帖子是本人原创,只在无忧和数码之家2个地方发过。
回复

使用道具 举报

4#
 楼主| 发表于 2009-3-5 10:43:40 | 只看该作者

关于Lun0,补充一些厂商的文档截图:


回复

使用道具 举报

5#
发表于 2009-3-9 17:11:10 | 只看该作者
慧荣的SMI32x量产就是cdrom在第一位
兼容性不错
回复

使用道具 举报

6#
发表于 2009-7-20 14:54:43 | 只看该作者
好帖,简单明了。
让我知其然,并知其所以然。

现在就去搜索楼主的其他帖子。
回复

使用道具 举报

7#
发表于 2009-7-23 11:34:25 | 只看该作者
我以前量产过  KINGMAX 4G的U盘    主控芯片是SK6211得   效果不错
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-1-10 22:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表