Live-User-Mode-Ziele
Die Methoden zum Erstellen und Anfügen an Prozesse, die in diesem Thema aufgeführt sind, können für den lokalen Computer und für einen Remotecomputer verwendet werden, auf dem ein Prozessserver ausgeführt wird.
Ein Benutzermodusprozess kann mit Create Process oder CreateProcess2 erstellt werden, die einen bestimmten Befehl ausführen, um einen Prozess zu erstellen. Die Methode AttachProcess kann verwendet werden, um die Debugger-Engine an einen vorhandenen Benutzermodusprozess anzufügen. CreateProcessAndAttach und CreateProcessAndAttach2 erstellen einen neuen Benutzermodusprozess, und fügen Sie ihn oder einen anderen Benutzermodusprozess auf demselben Computer an. Die AnforderungsvorgängeDEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS, DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS und DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE können verwendet werden, um einige der Standardoptionen zum Erstellen von Prozessen festzulegen.
Hinweis Die Engine wird erst vollständig an den Prozess angefügt, wenn die WaitForEvent-Methode aufgerufen wurde. Erst nachdem der Prozess ein Ereignis generiert hat , z. B. das Prozesserstellungsereignis, wird es in der Debuggersitzung verfügbar. Weitere Informationen finden Sie unter Debuggen von Sitzungs- und Ausführungsmodell .
Die Methode GetRunningProcessSystemIds gibt die Prozess-IDs aller ausgeführten Prozesse auf dem Computer zurück. Die Prozess-ID eines bestimmten Programms kann mithilfe von GetRunningProcessSystemIdByExecutableName gefunden werden. Bei einer Prozess-ID wird eine Beschreibung des Prozesses von GetRunningProcessDescription zurückgegeben.
Prozessoptionen
Die Prozessoptionen bestimmen einen Teil des Verhaltens der Engine, wenn sie an einen Benutzermodusprozess angefügt wird, einschließlich, ob die Debugger-Engine automatisch an untergeordnete Prozesse angefügt wird, die vom Zielprozess erstellt wurden, und was die Engine mit den Zielprozessen ausführt, wenn sie beendet wird. Eine Beschreibung der Prozessoptionen finden Sie unter DEBUG_PROCESS_XXX .
Die Prozessoptionen können mit GetProcessOptions abgefragt werden. Sie können mit AddProcessOptions, RemoveProcessOptions und SetProcessOptions geändert werden.
Trennen von Prozessen
Es gibt drei verschiedene Möglichkeiten für die Engine, die Verbindung von einem Prozess zu trennen.
Trennen: Setzen Sie alle Threads im Prozess fort, damit er weiterhin ausgeführt wird und nicht mehr debuggt wird. DetachCurrentProcess trennt das Modul vom aktuellen Prozess, und DetachProcesses trennt das Modul von allen Prozessen. Nicht alle Ziele unterstützen das Trennen. Der DEBUG_REQUEST_TARGET_CAN_DETACH Anforderungsvorgang kann verwendet werden, um zu überprüfen, ob das Ziel das Trennen unterstützt.
Beenden. Versuchen Sie, den Prozess zu beenden. TerminateCurrentProcess beendet den aktuellen Prozess, und TerminateProcesses beendet alle Prozesse in der Debuggersitzung.
Aufgeben. Entfernen Sie den Prozess aus der Liste der zu debuggenden Prozesse. Das Betriebssystem betrachtet den Prozess weiterhin als debugged und bleibt angehalten, bis ein anderer Debugger an ihn angefügt wird oder er beendet wird. AbandonCurrentProcess beendet den aktuellen Prozess.