Целевые объекты live User-Mode

Методы создания и присоединения к процессам, перечисленным в этом разделе, можно использовать как для локального компьютера, так и для удаленного компьютера с сервером обработки.

Процесс в пользовательском режиме можно создать с помощью метода Create Process или CreateProcess2, которые выполняют заданную команду для создания процесса. Метод AttachProcess можно использовать для подключения подсистемы отладчика к существующему процессу пользовательского режима. CreateProcessAndAttach и CreateProcessAndAttach2 создают новый процесс в пользовательском режиме и присоединяют к нему или другой процесс пользовательского режима на том же компьютере. С помощью DEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS, DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS и DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE операций запроса можно задать некоторые параметры по умолчанию для создания процессов.

Примечание Подсистема не будет полностью присоединяться к процессу, пока не будет вызван метод WaitForEvent . Только после того, как процесс сгенерировал событие , например событие создания процесса, оно становится доступным в сеансе отладчика. Дополнительные сведения см. в разделе Отладка сеанса и модели выполнения .

Метод GetRunningProcessSystemIds возвращает идентификаторы всех запущенных процессов на компьютере. Идентификатор процесса конкретной программы можно найти с помощью getRunningProcessSystemIdByExecutableName. С учетом идентификатора процесса getRunningProcessDescription возвращает описание процесса.

Параметры процесса

Параметры процесса определяют часть поведения подсистемы при подключении к процессу в пользовательском режиме, включая то, будет ли подсистема отладчика автоматически подключаться к дочерним процессам, созданным целевым процессом, и что он делает с целевыми процессами при выходе. Описание параметров процесса см. в DEBUG_PROCESS_XXX .

Параметры процесса можно запросить с помощью GetProcessOptions. Их можно изменить с помощью команд AddProcessOptions, RemoveProcessOptions и SetProcessOptions.

Отключение от процессов

Существует три разных способа отключения подсистемы от процесса.

  1. Отсоединение. Возобновите все потоки в процессе, чтобы он продолжал выполняться без отладки. DetachCurrentProcess отсоединит подсистему от текущего процесса, а DetachProcesses отсоединит подсистему от всех процессов. Не все целевые объекты поддерживают отсоединение. DEBUG_REQUEST_TARGET_CAN_DETACH операции запроса можно использовать для проверка, поддерживает ли целевой объект отсоединение.

  2. Завершить работу. Попытка завершения процесса. TerminateCurrentProcess завершит текущий процесс, а TerminateProcesses — все процессы в сеансе отладчика.

  3. Откажься. Удалите процесс из списка отлаживаемых процессов. Операционная система по-прежнему будет рассматривать процесс как отлаживаемый и будет приостановлен до тех пор, пока к нему не подключится другой отладчик или он не будет остановлен. AbandonCurrentProcess откажется от текущего процесса.