【轉貼】98的USB 通用驅動



贊助商連結


wolfkied
2004-07-20, 03:44 AM
98的USB 通用驅動程序 第三版

原始文件
http://bbs.wuyou.com/cgi-bin/topic.cgi?forum=2&topic=14428&show=0

前一段時間我發布了USB 通用驅動程序第二版,它是一個
從winme抽取出來的WDM版本的USB Mass Storage
驅動程序和我重寫的USBMPHLP.PDR連接埠驅動程序的混合體。
這個終結篇的USB 通用驅動程序完全採用來自winme 的 USB
Mass Storage 驅動程序,僅僅需要修改USBMPHLP.PDR中的兩個位元組,
完全不需要重寫USBMPHLP.PDR,因為這個驅動和第二版的功能上
沒有任何區別,僅僅是它和winme 中的驅動程序幾乎完全一樣,
所以我才稱它為終結篇,
方法:
在用一個16進制編輯器(如winhex或者UltraEdit)在USBMPHLP.PDR 文件中
搜索兩個連續位元組0x5a,0x04,把它替換為0x0a,0x04,一共可以
找到兩處,所以共需要修改兩個位元組。
其余的文件和我在USB 通用驅動程序第二版中發布的沒有區別。
原理:
我一直在考慮為什麼原來WINEME的USBMPHLP.PDR連接埠驅動程序在WIN98
下面不能加載,而我寫的功能完全一樣的代碼沒有問題,那麼多半是編譯時
的原因。
我把我寫的USBMPHLP.PDR連接埠驅動程序分別在9DK 和 WIN2kME 的DDK
下編譯,發現產生的代碼有兩個位元組不同(就是0x5a,0x04和0x0a,0x04的不同),
而在WIN2kME 的DDK下編譯的USBMPHLP.PDR連接埠驅動程序也不能在WIN98下加載。
那麼原因是什麼,仔細看了一下WIN2KME DDK的頭文件,發現如下語句
ifndef DDK_VERSION
ifdef WIN31COMPAT
DDK_VERSION EQU 30AH
else
ifdef WIN40COMPAT
DDK_VERSION EQU 400H
else
ifdef WIN41COMPAT
DDK_VERSION EQU 40AH
else
DDK_VERSION EQU 45AH
endif
endif
endif
endif
VxD_Desc_Block STRUC
DDB_Next DD ?
DDB_SDK_Version DW DDK_VERSION
.
.
.
VxD_Desc_Block ENDS

看出來了,0x5a,0x04 就是45AH 而0x0a,0x04就是40AH,
於是我在WIN2KME 的DDK 下編譯時,定義WIN41COMPAT常量,
就可以讓win98加載這個vxd。

最後,我檢查winme 的原來的USBMPHLP.pdr連接埠驅動程序文件,
修改裡面的45aH 為40AH,在WIN98下面測試一切正常。
原來win98 不能加載winme 的USBMPHLP.pdr 是因為版本檢查的原因,
而USBMPHLP.pdr 的功能非常簡單,所以這個版本檢查的限制是沒有
必要的。

ps:
如果修改45AH為400H 是不是就可以在win95C 下加載了呢?
誰有win95C,可以試一下。

其余內容參見我的帖子
\"USB 通用驅動程序第二版\"。

其中 Usbmphlp.pdr.me 是winme 的 原版的Usbmphlp.pdr
Usbmphlp.pdr 是我直接 修改winme 的Usbmphlp.pdr 之後的結果

直接安裝版(簡体中文)
http://www.gxxhcpa.com/htdocs/UPFILE/20031251558110.exe

獨立版
http://bbs.wuyou.com/non-cgi/usr/2/2_14428.rar

==================================================
以下為相關文章與其它版本

可用,但不知那來的版本
http://bbs.wuyou.com/non-cgi/usr/2/2_14428_8.rar

從WIN2000分離出來的版本(內含DOS版)
http://bbs.wuyou.com/non-cgi/usr/2/2_14428_23.rar

Windows NT4.0 使用 USB 裝置的方法(DOS下掛USB的驅動程式的方法)
http://www.pczone.com.tw/showthread.php?t=97951

松下研發出DOS下的USB驅動
http://www.pczone.com.tw/showthread.php?t=105921

贊助商連結


hhdc
2004-08-14, 04:15 PM
請問98的USB是不是只有支援兩個USB孔啊,
我原本是安裝XP,可以使用到4個USB,
可是昨天我重新灌98時,發現到USB只有兩個孔可以用,
所以請問大家,是不是98只有支援兩個USB孔而已。

Raven
2004-08-16, 02:17 AM
最初由 hhdc 發表
請問98的USB是不是只有支援兩個USB孔啊,
我原本是安裝XP,可以使用到4個USB,
可是昨天我重新灌98時,發現到USB只有兩個孔可以用,
所以請問大家,是不是98只有支援兩個USB孔而已。

可沒這限制阿~~

hhdc
2004-08-21, 09:39 AM
最初由 Raven 發表
可沒這限制阿~~

那可能是我的IRQ用掉太多了,
因為我的印表機和滑鼠也是USB的,
所以我進BIOS設定,把Parallel Port關閉,
這樣一來在98下所有USB都通了。