实时用户模式目标

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

可以使用 Create ProcessCreateProcess2 创建用户模式进程,后者执行给定的命令来创建进程。 方法 AttachProcess 可用于将 调试器引擎 附加到现有用户模式进程。 CreateProcessAndAttachCreateProcessAndAttach2 创建一个新的用户模式进程,并将其附加到同一计算机上的其他用户模式进程。 请求操作DEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONSDEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONSDEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE可用于设置一些用于创建进程的默认选项。

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

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

处理选项

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

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

断开与进程的连接

引擎可通过三种不同的方式与进程断开连接。

  1. 分离。 恢复进程中的所有线程,使其继续运行,不再被调试。 DetachCurrentProcess 将从当前进程分离引擎, DetachProcesses 将从所有进程分离引擎。 并非所有目标都支持分离。 如果目标支持分离,可以使用请求操作DEBUG_REQUEST_TARGET_CAN_DETACH检查。

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

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