Destinazioni User-Mode live

I metodi per la creazione e il collegamento a processi elencati in questo argomento possono essere utilizzati per il computer locale e per un computer remoto che esegue un server di elaborazione.

È possibile creare un processo in modalità utente usando Crea processo o CreateProcess2, che esegue un determinato comando per creare un processo. Il metodo AttachProcess può essere usato per collegare il motore del debugger a un processo in modalità utente esistente. CreateProcessAndAttach e CreateProcessAndAttach2 creano un nuovo processo in modalità utente e lo collegano o un altro processo in modalità utente nello stesso computer. Le operazioni di richiestaDEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS, DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS e DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE possono essere usate per impostare alcune delle opzioni predefinite per la creazione di processi.

Nota Il motore non è completamente collegato al processo finché non viene chiamato il metodo WaitForEvent . Solo dopo che il processo ha generato un evento, ad esempio l'evento di creazione del processo, diventa disponibile nella sessione del debugger. Per altri dettagli, vedere Debug della sessione e del modello di esecuzione .

Il metodo GetRunningProcessSystemIds restituirà gli ID processo di tutti i processi in esecuzione nel computer. L'ID del processo di un programma specifico è disponibile usando GetRunningProcessSystemIdByExecutableName. Dato un ID processo, una descrizione del processo viene restituita da GetRunningProcessDescription.

Opzioni processo

Le opzioni di processo determinano parte del comportamento del motore quando è collegato a un processo in modalità utente, incluso se il motore del debugger verrà collegato automaticamente ai processi figlio creati dal processo di destinazione e ciò che il motore esegue con i processi di destinazione quando viene chiuso. Per una descrizione delle opzioni del processo , vedere DEBUG_PROCESS_XXX .

È possibile eseguire query sulle opzioni di processo usando GetProcessOptions. Possono essere modificati usando AddProcessOptions, RemoveProcessOptions e SetProcessOptions.

Disconnessione da processi

Esistono tre modi diversi per disconnettere il motore da un processo.

  1. Rendere non visibile. Riprendere tutti i thread del processo in modo che continuino a essere in esecuzione e non vengano più sottoposti a debug. DetachCurrentProcess scollega il motore dal processo corrente e DetachProcesses scollega il motore da tutti i processi. Non tutte le destinazioni supportano lo scollegamento. L'operazione di richiestaDEBUG_REQUEST_TARGET_CAN_DETACH può essere usata per verificare se la destinazione supporta lo scollegamento.

  2. Termina. Tentare di terminare il processo. TerminateCurrentProcess terminerà il processo corrente e TerminateProcesses terminerà tutti i processi nella sessione del debugger.

  3. Abbandonare. Rimuovere il processo dall'elenco dei processi di cui è in corso il debug. Il sistema operativo considererà comunque il processo come sottoposto a debug e rimarrà sospeso fino a quando un altro debugger non viene collegato a esso o viene terminato. AbandonCurrentProcess abbandonerà il processo corrente.