Compartir a través de


Destinos de User-Mode activos

Los métodos para crear y adjuntar a procesos enumerados en este tema se pueden usar para el equipo local y para un equipo remoto que ejecuta un servidor de procesos.

Se puede crear un proceso en modo de usuario mediante Create Process o CreateProcess2, que ejecutan un comando determinado para crear un proceso. El método AttachProcess se puede usar para asociar el motor del depurador a un proceso en modo de usuario existente. CreateProcessAndAttach y CreateProcessAndAttach2 crean un nuevo proceso en modo de usuario y se adjuntan a él u otro proceso en modo de usuario en el mismo equipo. Las operaciones de solicitudDEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS, DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS y DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE se pueden usar para establecer algunas de las opciones predeterminadas para crear procesos.

Nota El motor no se asocia completamente al proceso hasta que se haya llamado al método WaitForEvent . Solo después de que el proceso haya generado un evento (por ejemplo, el evento de creación del proceso), estará disponible en la sesión del depurador. Consulte Depuración del modelo de sesión y ejecución para obtener más información.

El método GetRunningProcessSystemIds devolverá los identificadores de proceso de todos los procesos en ejecución en el equipo. El identificador de proceso de un programa determinado se puede encontrar mediante GetRunningProcessSystemIdByExecutableName. Dado un identificador de proceso, GetRunningProcessDescription devuelve una descripción del proceso.

Opciones de proceso

Las opciones de proceso determinan parte del comportamiento del motor cuando se adjuntan a un proceso en modo de usuario, incluido si el motor del depurador se asociará automáticamente a los procesos secundarios creados por el proceso de destino y lo que hace el motor con los procesos de destino cuando salga. Consulte DEBUG_PROCESS_XXX para obtener una descripción de las opciones de proceso.

Las opciones de proceso se pueden consultar mediante GetProcessOptions. Se pueden cambiar mediante AddProcessOptions, RemoveProcessOptions y SetProcessOptions.

Desconexión de procesos

Hay tres maneras diferentes para que el motor se desconecte de un proceso.

  1. Desasociar. Reanude todos los subprocesos del proceso para que continúe ejecutándose, ya no se depurará. DetachCurrentProcess desasociará el motor del proceso actual y DetachProcesses desasociará el motor de todos los procesos. No todos los destinos admiten la desasociación. La operación de solicitudDEBUG_REQUEST_TARGET_CAN_DETACH se puede usar para comprobar si el destino admite la desasociación.

  2. Finalizar. Intente eliminar el proceso. TerminateCurrentProcess finalizará el proceso actual y TerminateProcesses finalizará todos los procesos de la sesión del depurador.

  3. Abandone. Quite el proceso de la lista de procesos que se están depurando. El sistema operativo seguirá teniendo en cuenta el proceso como depurado y permanecerá suspendido hasta que otro depurador se adjunte a él o se mate. AbandonCurrentProcess abandonará el proceso actual.