Целевые объекты 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.
Отключение от процессов
Существует три разных способа отключения подсистемы от процесса.
Отсоединение. Возобновите все потоки в процессе, чтобы он продолжал выполняться без отладки. DetachCurrentProcess отсоединит подсистему от текущего процесса, а DetachProcesses отсоединит подсистему от всех процессов. Не все целевые объекты поддерживают отсоединение. DEBUG_REQUEST_TARGET_CAN_DETACH операции запроса можно использовать для проверка, поддерживает ли целевой объект отсоединение.
Завершить работу. Попытка завершения процесса. TerminateCurrentProcess завершит текущий процесс, а TerminateProcesses — все процессы в сеансе отладчика.
Откажься. Удалите процесс из списка отлаживаемых процессов. Операционная система по-прежнему будет рассматривать процесс как отлаживаемый и будет приостановлен до тех пор, пока к нему не подключится другой отладчик или он не будет остановлен. AbandonCurrentProcess откажется от текущего процесса.