实时用户模式目标

创建和附加到本主题中列出的进程的方法可用于本地计算机和运行进程服务器的远程计算机。

可以使用创建进程或 CreateProcess2 创建用户模式进程,这些进程执行给定的命令来创建进程。 AttachProcess 方法可用于将调试器引擎附加到现有的用户模式进程。 CreateProcessAndAttachCreateProcessAndAttach2 创建新的用户模式进程,并附加到该进程或同一计算机上另一个用户模式进程。 "请求DEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONSDEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS和DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE可用于设置一些用于创建进程的默认选项。

注意 在调用 WaitForEvent 方法之前,引擎不会完全附加到进程。 只有在进程生成事件(例如进程创建事件)后,它才在调试器会话中可用。 有关 更多详细信息,请参阅调试会话 和执行模型。

GetRunningProcessSystemIds 方法将返回计算机上所有正在运行的进程的进程 ID。 可以使用 GetRunningProcessSystemIdByExecutableName 找到特定程序的进程 ID。 给定进程 ID 后, GetRunningProcessDescription 将返回进程的说明。

处理选项

进程选项确定附加到用户模式进程时引擎行为的一部分,包括调试器引擎是否将自动附加到目标进程创建的子进程,以及引擎在退出时对目标进程执行哪些操作。 有关 DEBUG_PROCESS_XXX 选项的说明,请参阅 DEBUG_PROCESS_XXX。

可以使用 GetProcessOptions 查询进程选项。 可以使用 AddProcessOptionsRemoveProcessOptionsSetProcessOptions 更改它们

从进程断开连接

引擎有三种不同的方法断开与进程的连接。

  1. 分离。 恢复进程中的所有线程,以便它将继续运行,不再被调试。 DetachCurrentProcess 将引擎与当前进程分离, DetachProcesses 将 引擎从所有进程分离。 并非所有目标都支持分离。 "请求DEBUG_REQUEST_TARGET_CAN_DETACH可用于检查目标是否支持分离。

  2. 终止。 尝试终止进程。 TerminateCurrentProcess 将终止当前进程 ,TerminateProcesses 将终止调试器会话中的所有进程。

  3. 放弃。 从正在调试的进程列表中删除进程。 操作系统仍将进程视为正在调试,并且它将保持挂起状态,直到另一个调试器附加到该进程或终止它。 AbandonCurrentProcess 将放弃当前进程。