即時User-Mode目標

建立和附加至本主題所列之進程的方法可用於本機電腦和執行進程伺服器的遠端電腦。

您可以使用 Create ProcessCreateProcess2建立使用者模式進程,以執行指定的命令來建立進程。 AttachProcess方法可用來將偵錯工具引擎附加至現有的使用者模式進程。 CreateProcessAndAttachCreateProcessAndAttach2 會建立新的使用者模式程式,並將它附加至同一部電腦上的另一個使用者模式進程。 要求作業DEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONSDEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONSDEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE可用來設定一些用於建立進程的預設選項。

注意 在呼叫 WaitForEvent 方法之前,引擎不會完全附加至進程。 只有在進程產生事件之後,進程建立事件才會出現在偵錯工具會話中。 如需詳細資訊,請參閱 偵錯會話和執行模型

GetRunningProcessSystemIds方法會傳回電腦上所有執行中進程的進程識別碼。 您可以使用 GetRunningProcessSystemIdByExecutableName找到特定程式的處理常式識別碼。 指定進程識別碼時, GetRunningProcessDescription會傳回進程的描述。

進程選項

進程選項會在附加至使用者模式進程時決定引擎行為的一部分,包括偵錯工具引擎是否會自動附加至目標進程所建立的子進程,以及引擎在結束時對目標進程執行的動作。 如需進程選項的描述 ,請參閱DEBUG_PROCESS_XXX

您可以使用 GetProcessOptions查詢進程選項。 您可以使用 AddProcessOptionsRemoveProcessOptionsSetProcessOptions來變更它們。

中斷與進程的連線

引擎有三種不同的方式可以中斷進程連線。

  1. 卸離。 繼續進程中的所有線程,使其繼續執行,不再進行偵錯。 DetachCurrentProcess 會將引擎與目前進程中斷連結, 而 DetachProcesses 會將引擎與所有進程中斷連結。 並非所有目標都支援卸離。 要求作業DEBUG_REQUEST_TARGET_CAN_DETACH可用來檢查目標是否支援卸離。

  2. 終止。 嘗試終止進程。 TerminateCurrentProcess 將會終止目前的進程, TerminateProcesses 將會終止偵錯工具會話中的所有進程。

  3. 放棄。 從正在偵錯的進程清單中移除進程。 作業系統仍會將進程視為正在偵錯,而且它仍會暫停,直到另一個偵錯工具附加至它或終止為止。 AbandonCurrentProcess 將會放棄目前的進程。