偵錯裝置安裝 Co-Installer
某些硬體裝置安裝套件包含稱為 共同安裝程式的 DLL 檔案,可協助安裝裝置。
您無法以與其他模組相同的方式偵錯共同安裝程式。 這是因為載入共同安裝程式的唯一方式,而且因為許多安裝案例會自動發生,而不會讓開發人員有機會中斷執行中的程式。
您可以透過程式設計方式安裝裝置來解決此問題。 將偵錯工具附加至安裝裝置的應用程式,允許存取共同安裝程式本身。 完成此作業的最簡單方式是使用 Windows Driver Kit (WDK) 隨附的 DevCon 工具來安裝或重新安裝裝置。 然後,您可以使用 WinDbg 對共同安裝程式進行偵錯。
使用下列程式來完成這項工作。 此程式假設您已為使用共同安裝程式的裝置開發工作驅動程式安裝套件。 它也假設您有 WDK 的最新複本。 如需開發驅動程式、驅動程式安裝套件和驅動程式安裝共同安裝程式的相關資訊,請參閱 WDK 檔。
使用 DevCon 和 WinDbg 偵錯共同安裝程式
插入硬體裝置。
取消 [ 新增硬體找到 精靈]。
啟動 WinDbg。
從 WinDbg 的 [檔案] 功能表中選取 [開啟可執行檔]。
在 [ 開啟可執行檔 ] 對話方塊中,執行下列動作:
在 [檔案選取] 文字方塊中,選取 DevCon 工具 (Devcon.exe) 。 為此,請流覽至 WDK 安裝資料夾,然後開啟子目錄工具,然後開啟子目錄 devcon,然後開啟符合電腦處理器架構的子目錄,然後選取 [Devcon.exe]。 在 Devcon.exe 上按一下一次,但尚未按 [開啟]。
在 [ 引數] 文字方塊中,輸入下列文字,其中 INFFile 是您裝置安裝資訊 (INF) 檔案的檔案名, 而 HardwareID 是您裝置的硬體識別碼:
update INFFile HardwareID
在 [ 開始目錄 ] 文字方塊中,輸入裝置安裝套件的路徑。
按一下 [開啟] 。
偵錯程式將會開始,而 WinDbg 將會在 DevCon 安裝驅動程式之前中斷至 DevCon 程式。
設定偵錯工具以在載入共同安裝程式程式時中斷。 您可以透過下列其中一種方法來執行此動作:
在 [偵錯工具命令] 視窗中,使用 sxe (設定例外狀況) 命令,後面接著 ld: 和共同安裝程式的檔案名,不包括副檔名。 冒號後面應該沒有空格。例如,如果共同安裝程式的名稱 mycoinst.dll,您可以使用下列命令:
sxe ld:mycoinst
從 WinDbg 的 [偵錯] 功能表中選取[事件篩選]。 在 [ 事件篩選] 對話方塊中,選取 [載入模組]。 在 [執行] 底下,選取 [已啟用]。 在 [繼續]下,選取 [未處理]。 按一下 [ 引數 ] 按鈕,然後在文字方塊中輸入共同安裝程式的檔案名,但不包括副檔名 (例如,輸入 「mylinuxst」 作為 mycoinst.dll) 。 按一下 [確定 ],然後按一下 [ 關閉]。
按 F5,或在 [偵錯工具命令] 視窗中輸入 g (Go) 命令,以繼續執行。
載入共同安裝程式時,執行會細分回偵錯工具。 此時,您可以設定所需的任何其他中斷點。
此程式的限制
在某些情況下,在 DevCon 下執行裝置安裝套件可能會導致與 PnP 安裝的行為稍有不同,因為不同的安全性權杖和類似。 如果您嘗試偵錯共同安裝程式中的特定問題,如果涉及 DevCon,就可能不會複寫此問題。 因此,在使用這項技術之前,您應該使用 DevCon 來安裝驅動程式,而不附加偵錯工具,以確認 PnP 和 DevCon 案例中都存在此問題。
如果每當 DevCon 起始安裝時,問題就會消失,則必須在不使用 DevCon 的情況下對共同安裝程式進行偵錯。 這樣做的其中一種方式是使用 TList 工具搭配 /m 選項來判斷正在載入共同安裝程式模組的程式,然後將偵錯工具附加至該程式。