[問題] Windows miniport driver 撰寫問題
各位大大好, 小弟上個月自學 miniport driver 的撰寫
有一些觀念如果不對敬請見諒
我是想撰寫一個 RAID Card 的 Driver
先是從 MSDN 上面有一個 LSI53c1010 的 scsi 卡 driver 的範例
因此我先從這個範例研究起
由於我的開發環境是 Windows server 2012
LSI53c1010 的 SCSI 卡似乎沒有支援
因此我拿 LSI53c1030 的卡裝在我的 PC 上
並且把 LSI53c1010 範例程式裡面
除了 DriverEntry 之外
其他像
LsiU3HWInitialize;
LsiU3StartIo;
LsiU3ISR;
LsiU3FindAdapter;
等等裡面的程式碼都註解掉
並且在裡面印出一些訊息
我只是單純想知道做當一個 Driver 裝上去之後
他會呼叫哪些函式
然後用 WinDbg 來看訊息這樣
INF 我也是使用 LSI53c1010 的來裝
他的 vendor id 和 device id 分別是 PCI\VEN_1000&DEV_0020 和
PCI\VEN_1000&DEV_0021
雖然 LSI53c1030 的 vendor id 和 device id 是 PCI\VEN_1000&DEV_0030
但如果我用這樣的 INF 裝上去
他執行到 FindAdapter 後會馬上呼叫 RemoveDevice
網路上查到的資訊好像是說因為這個 vendor id 和 device id 跟其他 driver 衝突了
因此才使用 PCI\VEN_1000&DEV_0020 和 PCI\VEN_1000&DEV_0021
雖然裝上去的時候他會提示我 Driver 的 vendor ID 和 device ID 無法辨識
但還是可以成功讓我裝
也成功呼叫了 DriverEntry -> Findadapter -> LsiU3HWInitialize -> BuildIo ->
StartIo
Q1:
請問我這樣的安裝方式是不是會有問題
是不是我 FindAdapter 那邊不能註解掉太多
要對 Configure 內的一些變數做設定
否則就會出現就算 Findadapter 回傳 Find adapter
系統還是會 remove 掉 device
因為網路上也有查到說因為系統不喜歡 Findadapter 函式內的 configure 設定
因此才會把它移除掉
Q2:
我是利用 WDK 提供內建的編譯環境來 build 範例的 makefile
我選用的是 windows 7 x64 Checked build environment
這樣編譯出來的 driver 放到 Windows server 2012上面跑會有問題嗎
還是只有能裝的起來就不會有問題?
接著我想對我的 driver 下 IOCTL
我利用 DDK 內建提供的工具 spti
來直接對我的 driver 下 scsi command
我原本預測當我 scsi command 下下去之後
Driver 會先呼叫 BuildIO
然後再呼叫 StartIO
可是結果卻不是我想的這樣
WinDbg 什麼東西都沒印出來
Q3
請問是否我的 scsi 卡 要接上硬碟
這樣下 IOCTL 給我的 driver 才會呼叫到 BuildIo
因為希望能夠下 IOCTL 給 driver
然後在 WinDbg 那邊看 CDB 的資訊
Q4
公司要我寫一個 miniport driver 可是我完全沒經驗
公司也沒人會 QQ
目前我只能鑽研 MSDN 提供的這個 LSI53c1010 的 driver
請問是否還有其他資源或網站或範例可以提供參考學習
萬分感謝
感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.122.2
→
12/10 21:24, , 1F
12/10 21:24, 1F
→
12/10 22:22, , 2F
12/10 22:22, 2F
→
12/10 22:24, , 3F
12/10 22:24, 3F
→
12/10 22:27, , 4F
12/10 22:27, 4F
→
12/10 22:27, , 5F
12/10 22:27, 5F
→
12/10 22:46, , 6F
12/10 22:46, 6F
→
12/10 22:47, , 7F
12/10 22:47, 7F
→
12/10 22:47, , 8F
12/10 22:47, 8F
→
12/11 01:55, , 9F
12/11 01:55, 9F
→
12/11 08:18, , 10F
12/11 08:18, 10F