引用不知道哪位大牛的原話:
對于即插即用簡單地說要對付2種情況
1。在你的設(shè)備未安裝前,安裝驅(qū)動程序這叫預(yù)先安裝。
最簡單的方法就是使用SetupCopyOEMInf函數(shù)。
具體做法是:
將SetupCopyOEMInf封裝在一個(gè)動態(tài)庫里。
用installshield將所有文件copy到一個(gè)臨時(shí)目錄。
調(diào)用動態(tài)庫使用SetupCopyOEMInf函數(shù)copy臨時(shí)目錄下的inf文件(路徑)。
installshield讓計(jì)算機(jī)重啟。
插上設(shè)備,自動識別。
2.你的設(shè)備已安裝,彈出安裝向?qū)А?
很簡單,讓用戶搜索你的安裝盤,即可完成安裝。
懶得寫dll了(其實(shí)是不會寫- -),devcon dp_add調(diào)用SetupCopyOEMInf做了預(yù)安裝
wdk文檔中關(guān)于預(yù)安裝的一段話
我剛開始以為預(yù)安裝就是直接把驅(qū)動安上,白癡似的把驅(qū)動直接安上了,然后我機(jī)子上面之前的驅(qū)動沒卸干凈,添上設(shè)備后直接能用,偶就把安裝程序當(dāng)成一個(gè)版本交了,囧。。。
Preinstalling Driver Packages
To preinstall driver files, your device installation application should follow these steps:
1. On the target system, create a directory for the driver files. If your device installation application installs an application, the driver files should be stored in a subdirectory of the application directory.
2. Copy all files in the driver package from the distribution media to the directory created in step (1). The driver package includes the driver or drivers, the INF file, the catalog file, and other installation files.
3. Call SetupCopyOEMInf specifying the INF file in the directory created in step (1). Specify SPOST_PATH for the OEMSourceMediaType parameter and specify NULL for the OEMSourceMediaLocation parameter. SetupCopyOEMInf copies the INF file for the driver package into the %windir%\Inf directory on the target system and directs Windows to store the source location of the INF file in its list of preprocessed INF files. SetupCopyOEMInf also processes the catalog file, so the PnP manager will install the driver the next time it recognizes a device listed in the INF file.
When the user plugs in the device, the PnP manager recognizes the device, finds the INF file copied by SetupCopyOEMInf, and installs the drivers copied in step (2). (For more information about copying INF files, see Copying INFs.)
安裝時(shí)直接把inf文件拷windows\inf下,卸載時(shí)刪除,防止被命名成oem*.inf,在某種情況下發(fā)生重復(fù)預(yù)注冊,同時(shí)也便于卸載時(shí)刪除inf文件
未完待續(xù)。。。