Debuggen eines geräteinstallations-Co-Installer
Einige Hardwaregeräteinstallationspakete enthalten DLL-Dateien, die als Co-Installer bezeichnet werden, die bei der Installation des Geräts helfen.
Sie können ein Co-Installer nicht auf die gleiche Weise debuggen wie andere Module. Dies liegt an der einzigartigen Art und Weise, wie ein Co-Installer geladen wird, und weil viele Installationsszenarien automatisch auftreten, ohne dem Entwickler die Möglichkeit zu geben, in den ausgeführten Prozess einzubrechen.
Sie können dieses Problem beheben, indem Sie das Gerät programmgesteuert installieren. Das Anfügen eines Debuggers an die Anwendung, die das Gerät installiert, ermöglicht den Zugriff auf den Co-Installer selbst. Die einfachste Möglichkeit ist die Installation oder Neuinstallation des Geräts mithilfe des DevCon-Tools , das im Windows Driver Kit (WDK) enthalten ist. Anschließend können Sie den Co-Installer mit WinDbg debuggen.
Verwenden Sie das folgende Verfahren, um diese Aufgabe auszuführen. Bei diesem Verfahren wird davon ausgegangen, dass Sie ein funktionierendes Treiberinstallationspaket für Ihr Gerät entwickelt haben, das einen Co-Installer verwendet. Außerdem wird davon ausgegangen, dass Sie über die neueste Kopie des WDK verfügen. Informationen zum Entwickeln von Treibern, Treiberinstallationspaketen und Treiberinstallations-Co-Installern finden Sie in der WDK-Dokumentation.
Debuggen eines Co-Installers mithilfe von DevCon und WinDbg
Schließen Sie das Hardwaregerät an.
Brechen Sie den Assistenten "Neue Hardware gefunden" ab.
Starten Sie WinDbg.
Wählen Sie im Menü Datei von WinDbg die Option Ausführbare Datei öffnen aus.
Gehen Sie im Dialogfeld Ausführbare Datei öffnen wie folgt vor:
Wählen Sie im Textfeld Dateiauswahl das DevCon-Tool (Devcon.exe) aus. Navigieren Sie hierzu zum WDK-Installationsordner, öffnen Sie dann die Unterverzeichnistools, öffnen Sie dann das Unterverzeichnis devcon, öffnen Sie dann das Unterverzeichnis, das der Prozessorarchitektur Ihres Computers entspricht, und wählen Sie dann Devcon.exe aus. Klicken Sie nur einmal auf Devcon.exe, und drücken Sie noch nicht öffnen.
Geben Sie in das Textfeld Argumente den folgenden Text ein, wobei INFFile der Dateiname Ihrer Inf-Datei (Device Installation Information) und HardwareID die Hardware-ID Ihres Geräts ist:
update INFFile HardwareID
Geben Sie im Textfeld Verzeichnis starten den Pfad zu Ihrem Geräteinstallationspaket ein.
Klicken Sie auf Öffnen.
Der Debugprozess beginnt, und WinDbg wird in den DevCon-Prozess eingebrochen, bevor DevCon Ihren Treiber installiert.
Konfigurieren Sie den Debugger so, dass er beim Laden in den Co-Installer-Prozess einbricht. Dazu können Sie eine der folgenden Methoden verwenden:
Verwenden Sie im Fenster Debuggerbefehl den Befehl sxe (Ausnahmen festlegen) gefolgt von ld: und dann den Dateinamen des Co-Installers, mit Ausnahme der Dateierweiterung. Es sollte kein Leerzeichen nach dem Doppelpunkt vorhanden sein Wenn der Name des Co-Installers beispielsweise mycoinst.dll ist, verwenden Sie den folgenden Befehl:
sxe ld:mycoinst
Wählen Sie im Menü Debuggen von WinDbg die Option Ereignisfilter aus. Wählen Sie im Dialogfeld Ereignisfilter die Option Modul laden aus. Wählen Sie unter Ausführungdie Option Aktiviert aus. Wählen Sie unter Weiterdie Option Nicht verarbeitet aus. Klicken Sie auf die Schaltfläche Argument , und geben Sie dann im Textfeld den Dateinamen des Co-Installers ein, ohne die Dateierweiterung (geben Sie beispielsweise "mycoinst" für mycoinst.dll ein). Klicken Sie auf OK und dann auf Schließen.
Setzen Sie die Ausführung fort, indem Sie F5 drücken oder den Befehl g (Go) im Debuggerbefehlsfenster eingeben.
Wenn das Co-Installer geladen wird, wird die Ausführung in den Debugger zurückgebrochen. An diesem Punkt können Sie alle zusätzlichen Haltepunkte festlegen, die Sie benötigen.
Einschränkungen dieses Verfahrens
In bestimmten Fällen kann das Ausführen eines Geräteinstallationspakets unter DevCon aufgrund unterschiedlicher Sicherheitstoken und dergleichen zu einem etwas anderen Verhalten als bei einer PnP-Installation führen. Wenn Sie versuchen, ein bestimmtes Problem in Ihrem Co-Installer zu debuggen, ist es möglich, dass dieses Problem nicht repliziert wird, wenn DevCon involviert ist. Daher sollten Sie vor der Verwendung dieses Verfahrens DevCon verwenden, um Ihren Treiber ohne einen angefügten Debugger zu installieren, um zu überprüfen, ob dieses Problem sowohl in den PnP- als auch in den DevCon-Szenarien vorhanden ist.
Wenn das Problem verschwindet, wenn DevCon die Installation initiiert, müssen Sie Ihr Co-Installationsprogramm debuggen, ohne DevCon zu verwenden. Eine Möglichkeit besteht darin, das TList-Tool mit der Option /m zu bestimmen, welcher Prozess das Co-Installer-Modul lädt, und dann den Debugger an diesen Prozess anzufügen.