我有Windows WDF設備驅動程序代碼,試圖使其工作在預安裝(設備存在之前)。它首先檢查有效的設備ID的存在,和任何被發現它這樣做:SetupCopyOemINF預安裝不工作Windows 7
if (UpdateDriverForPlugAndPlayDevices(0, // No Window Handle
hwid, // Hardware ID
inffile, // FileName
INSTALLFLAG_FORCE,
&RebootRequired))
// success
但是,如果沒有器件/插入,它這樣做:
if(SetupCopyOEMInf(inffile,
NULL,
SPOST_PATH,
0,
NULL,
0,
NULL,
NULL))
// etc.
在第一種情況下(裝置存在),一切都很好。但在第二種情況下,根據微軟的「預安裝驅動程序包」,它應該將INF複製到c:\ Windows \ inf \ oem.inf(它所做的),然後一旦存在設備,就應該安裝驅動程序在INF中的信息,它不,並且我必須去設備管理器,刪除未知的設備,並掃描硬件的變化,使其安裝。
在第一種情況下(設備存在),我們的驅動程序.sys文件被複制到c:\ windows \ system32 \ drivers目錄中,而在第二種情況下它永遠不會。如果我只是單獨將.sys文件複製到c:\ windows \ system32 \ drivers,一切正常。我可以這麼做,但是由於我閱讀了微軟的「預安裝驅動程序包」文檔,因此它似乎都是自動處理的,似乎是kludgey(並且有風險)。