幸好微软并不能决定一切,Pocketec公司开发的DUSE就为我们提供了在DOS下对USB存储设备(USB硬盘、软驱、光驱)的支持,不过它目前还不支持较常见的USB ThumbDrive(即U盘)。若要在DOS下驱动USB的U盘,请使用Motto Hairu驱动程序。另外,如果想在纯DOS下使用其它USB设备,如USB鼠标、USB打印机等,则可以使用其它的USB驱动程序,如USB_Link中的OHCI/UHCI,以及USB4DOS等,均可在本站的“驱动程序”中找到相应的链接,并可在“DOS使用中的常见问题解答(FAQ)”中看到一些DOS下使用USB设备的信息。
DUSE是DOS下的USB存储设备的驱动程序,目前的最新版本为4.2,是今年刚推出的。它的用法很简单,可在CONFIG.SYS中加载,也可以用它自带的DUSELDR.COM程序来实现在DOS命令行下(包括批处理文件中)的加载。例如在CONFIG.SYS中加上一行:DEVICE=C:\DOS\DUSE.EXE或在DOS命令行下执行DUSELDR C:\DOS\DUSE.EXE均可。
如果要加载的是USB光驱,除加载DUSE驱动程序外,还需运行光驱扩展驱动程序,通常可以使用DOS自带的MSCDEX.EXE。DUSE的默认光驱设备名是USBCDROM,在DOS命令行下可以像下面这样运行MSCDEX.EXE:
MSCDEX /D:USBCDROM /K
如果要更好地使用和控制DUSE,可以使用它提供的参数,DUSE的运行参数如下表:
(说明:以下为它的4.2版的参数,其最新4.4版又增加了EMUIRQ、UBNU、DDWAIT等参数。[]中表示可以省略的,以VER[BOSE]为例,VERBOSE是参数的完整写法,而VER则是简写,即[]中的BOSE可以省略。)
1: VER[BOSE][=x], 允许显示状态信息。x的合法值是0、1和2。0表示不显示信息,1表示显示文本消息,2表示采用弹出式窗口显示信息。默认值为0,如果输入了VERBOSE参数但未设定x的值的话,默认值为2。
2: WAI[T]=x, 设置显示弹出式窗口到关闭此窗口的时间(以秒来计算)。x的合法值为0到255之间,默认值为3。只有当VERBOSE的值为2的时候此参数才有效。
3: DRI[VES]=x, 设置允许的USB驱动器的数目。X取值从0到3。如果设置为0的话表示禁止USB驱动器的支持。默认值为1。
4: NOD[RIVES], 禁止对USB驱动器的支持。此参数将覆盖DRIVES参数设置。
5: NOC[DROM], 禁止对USB CD-ROM光驱的支持。
6: MEM[POOL]=x, 设置分配附加的内存的大小。DUSE会根据USB控制器的数目、传输的速度等来进行计算,确定最佳分配内存的大小。而设置此参数将由用户决定内存分配的大小,x值的单位为KB,合法值在0到128之间。
7: XFER[SIZE]=x, 设置允许的最大传输缓冲区,x值单位为KB来。增加传输缓冲区将增强传输性能,但也需要占用更多的内存。默认值为16。
8: SEC[TORSIZE]=x, 设置USB驱动器的扇区大小。x的值用字节来表示。合法值为512,1024或2048,默认为512。
9: APM[STATE]=x, 设置APM(高级电源管理)功能已启用的USB设备中APM的级别。增加此级别将增加设备的性能,但会增加电源的损耗。下面列出了合法的APM的状态x值:
* 最大性能 FEh
* 无挂起功能时中间的电源管理级别 81h-FDh
* 无挂起功能时最小电源损耗 80h
* 带挂起功能时中间的电源管理级别 02h-7Fh
* 带挂起功能时最小电源损耗 01h
x的默认值为0x7F。
10: INT[13], 启用硬盘的INT13功能支持. 此功能对一些磁盘工具(如FDISK)提供支持。
11: DMA[SAFE], 分配在数据传输中使用的DMA安全缓冲区。在运行一些需要从扩展内存中分配的缓冲的应用程序时此参数是必须指定的。
12: NOU[HCI], 防止初始化UHCI USB控制器。
13: NOO[HCI], 防止初始化OHCI USB控制器。
14: NOE[HCI], 防止初始化EHCI USB控制器。
15: UHCN=x, 指定DUSE初始化的UHCI控制器的最大数目为x。
16: OHCN=x, 指定DUSE初始化的OHCI控制器的最大数目为x。
17: EHCN=x, 指定DUSE初始化的EHCI控制器的最大数目为x。
18: LATE[INIT], 启用“延时初始化”的功能. 当使用此功能时,驱动程序在DOS启动阶段从CONFIG.SYS文件中加载,但是直到在DOS命令中使用INIT参数运行DUSE时才会正式启用USB设备,典型是在AUTOEXEC.BAT文件的结尾。可看下面的“延时初始化”和“将DUSE当作应用程序来运行”的部分。
19: EBAR=x, 指定EHCI BAR(基地址寄存器)将被分配到内存中的地址。x的值必须是四位的16进制数字并带上前缀0x,例如要将EHCI BAR的地址置为0xE000,那么正确的命令行选项就是EBAR=0xE000。合法的地址区域在0xA000到0xF400之间。
20: OBAR=x, 指定OHCI BAR将被分配到内存中的地址。上面对EBAR的描述可应用于OBAR。
21: UBAR=x, 指定UHCI BAR将被分配到内存中的地址。上面对EBAR的描述可应用于UBAR,不过它的合法的地址区域在0x0400到0xF400之间。
22: CDW[AIT][=x], 指示DUSE的初始化要等到第一个USB CD-ROM光驱的盘符被分配,或在x秒钟之内不要结束。x的合法值在0到30之间。x=0是一个特殊值,它表示DUSE将一直等到第一个USB CD-ROM光驱的盘符被分配或用户按下键盘上的ESC键。如果没有指定x的值的话,默认为x=0。
23: CDD[EVICE]=<设备名>, 指定USB CD-ROM光驱的设备名。默认设备名是USBCDROM。
24: VFLOP[PY], 初始化时建立一个启动软盘的虚拟映像。
以下是使用一个命令行参数的例子。可参考此行把DUSE加入到CONFIG.SYS文件中:
DEVICE=C:\DUSE\DUSE.EXE VERBOSE DRIVES=2 XFER=8 SEC=2048 NOCD
此例子设置:
* 显示弹出式状态窗口
* 支持两个USB驱动器
* 将最大传输缓冲区大小设为8K
* 将默认扇区大小设为2048字节
* 禁止对USB CD-ROM光驱提供支持
* 关于“延时初始化”的功能
当在CONFIG.SYS中以LATE[INIT]参数来运行DUSE(例如使用DEVICE=DUSE.EXE LATE)时,要真正使用USB设备还需进行一次真正的初始化。真正的初始化的方法是在DOS命令行下(包括批处理文件中)使用DUSE INIT命令。
* 关于“将DUSE当作应用程序来运行”的功能
将DUSE当作应用程序来在DOS命令行下运行时,DUSE只支持INIT参数。此参数在上面的“延时初始化”以后于DOS命令行上加载,使得DUSE真正初始化USB设备,以真正使用USB设备。