http://topic.csdn.net/t/20051220/14/4470178.html
我要做一個驅動自動安裝的安裝程式,要在XP下安裝驅動。
我這裡共兩個檔案,一個.inf,一個.sys。
參考了論壇裡幾位前輩的貼子,談論的方法都是在InstallShield裡,
在某處(比如OnFirstUIAfter函數)加上如下代碼:
//==============================================
//...
string szProgram;
string szCmdLine;
//...
szProgram = "rundll32.exe";
szCmdLine = "setupapi.dll,InstallHinfSection 你要執行的section名 132" + "你的.inf檔案所在全路徑名";
LaunchAppAndWait(szProgram, szCmdLine, WAIT);
//==============================================
其實InstallShield內部的實現是調用Windows API函數orShellExecuteEx(orShellExecute),
於是我就自己寫了個程式來實現如上代碼效果,以下是我在MFC裡寫的代碼:
//==============================================
::ShellExecute(NULL, "open", "rundll32.exe",
"setupapi.dll, InstallHinfSection PwSwpDrv.Dev 132 c://driver//pwswpdrv.inf",
"c://driver", SW_SHOWNORMAL);
//==============================================
我的兩個檔案.inf和.sys放在C盤的自己建的driver目錄下。
程式執行的結果是:
1.因為指定了SW_SHOWNORMAL,所以出現了一個將.sys檔案拷到c:/windows/system32/driver目錄下的一個對話方塊。
2.也是最關鍵的:我在c:/windows/inf目錄下發現我的.inf檔案已成功地轉化為oem13.inf(我機器裡是oem13,這個數字是不一定的,視機器而定);在c:/windows/system32/driver目錄下也發現我的.inf檔案,名字沒變。
按理說出現了剛才的第2點,安裝已經成功,為什麼我的驅動還無法正常工作?裝置管理員裡我的裝置還是有個驚嘆號,而且點查看驅動詳細資料時,出現該裝置沒有安裝驅動。
請問大家各路高手,到底該如何?驅動的自動安裝?謝謝!!!
編寫INF檔案時,參看DDK中"Installation Requirements for Network Protocols"。
如果安裝失敗,請檢查%systemroot%/setupapi.log檔案。
假設用NCPA安裝INF檔案時碰到如下錯誤資訊:
> Error E000020B in UpdateDriverForPlugAndPlayDevices: ERROR_NO_SUCH_DEVINST
> #E154 類別安裝程式失敗。 錯誤 0xe0000208: 操作無法在尚未註冊的裝置資訊元素上運行。
請立即用chkinf.bat(DDK內建工具)檢查一下INF檔案,此時可能有低級錯誤出現,比
如"AddReg項不在正確的節內"。