|
..............................................
(本贴内容,未经许可,请勿转贴、引用、盗用,谢谢合作!)
松下的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 编辑 ] |
评分
-
查看全部评分
|