Partager via


Cibles de User-Mode en direct

Les méthodes de création et d’attachement à des processus répertoriés dans cette rubrique peuvent être utilisées pour l’ordinateur local et pour un ordinateur distant exécutant un serveur de processus.

Un processus en mode utilisateur peut être créé à l’aide de Create Process ou CreateProcess2, qui exécutent une commande donnée pour créer un processus. La méthode AttachProcess peut être utilisée pour attacher le moteur de débogueur à un processus en mode utilisateur existant. CreateProcessAndAttach et CreateProcessAndAttach2 créent un nouveau processus en mode utilisateur et l’attachent à celui-ci ou à un autre processus en mode utilisateur sur le même ordinateur. Les opérations de requêteDEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS, DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS et DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE peuvent être utilisées pour définir certaines des options par défaut pour créer des processus.

Note Le moteur ne s’attache pas complètement au processus tant que la méthode WaitForEvent n’a pas été appelée. Ce n’est qu’une fois que le processus a généré un événement(par exemple, l’événement de création du processus) qu’il devient disponible dans la session du débogueur. Pour plus d’informations, consultez Débogage de session et modèle d’exécution .

La méthode GetRunningProcessSystemIds retourne les ID de processus de tous les processus en cours d’exécution sur l’ordinateur. L’ID de processus d’un programme particulier est disponible à l’aide de GetRunningProcessSystemIdByExecutableName. Étant donné un ID de processus, une description du processus est retournée par GetRunningProcessDescription.

Options de processus

Les options de processus déterminent une partie du comportement du moteur lorsqu’il est attaché à un processus en mode utilisateur, notamment si le moteur de débogueur s’attache automatiquement aux processus enfants créés par le processus cible et ce que le moteur fait avec les processus cibles lorsqu’il quitte. Consultez DEBUG_PROCESS_XXX pour obtenir une description des options de processus.

Les options de processus peuvent être interrogées à l’aide de GetProcessOptions. Vous pouvez les modifier à l’aide de AddProcessOptions, RemoveProcessOptions et SetProcessOptions.

Déconnexion des processus

Il existe trois façons différentes pour le moteur de se déconnecter d’un processus.

  1. Détacher. Reprenez tous les threads du processus afin qu’il continue à s’exécuter, sans être débogué. DetachCurrentProcess détache le moteur du processus en cours et DetachProcesses détache le moteur de tous les processus. Toutes les cibles ne prennent pas en charge le détachement. L’opération RequestDEBUG_REQUEST_TARGET_CAN_DETACH peut être utilisée pour case activée si la cible prend en charge le détachement.

  2. Terminez. Tentez de tuer le processus. TerminateCurrentProcess met fin au processus en cours et TerminateProcesses met fin à tous les processus de la session du débogueur.

  3. Abandonnez. Supprimez le processus de la liste des processus en cours de débogage. Le système d’exploitation considère toujours le processus comme étant débogué et il reste suspendu jusqu’à ce qu’un autre débogueur s’y attache ou qu’il soit tué. AbandonCurrentProcess abandonne le processus en cours.