Metodo IDebugClient5::CreateProcessAndAttach2 (dbgeng.h)

Il metodo CreateProcessAndAttach2 crea un processo da una riga di comando specificata, quindi collega a tale processo o a un altro processo in modalità utente.

Sintassi

HRESULT CreateProcessAndAttach2(
  [in]           ULONG64 Server,
  [in, optional] PSTR    CommandLine,
  [in]           PVOID   OptionsBuffer,
  [in]           ULONG   OptionsBufferSize,
  [in, optional] PCSTR   InitialDirectory,
  [in, optional] PCSTR   Environment,
  [in]           ULONG   ProcessId,
  [in]           ULONG   AttachFlags
);

Parametri

[in] Server

Specifica il server di elaborazione da usare per collegare il processo. Se Server è zero, il motore si connetterà al processo locale senza usare un server di elaborazione.

[in, optional] CommandLine

Specifica la riga di comando da eseguire per creare il nuovo processo. Se CommandLine è NULL, non viene creato alcun processo e questi metodi useranno ProcessId per collegare un processo esistente.

[in] OptionsBuffer

Specifica le opzioni di creazione del processo. OptionsBuffer è un puntatore a una struttura DEBUG_CREATE_PROCESS_OPTIONS .

[in] OptionsBufferSize

Specifica le dimensioni del buffer OptionsBuffer. Questa opzione deve essere impostata su sizeof(DEBUG_CREATE_PROCESS_OPTIONS).

[in, optional] InitialDirectory

Specifica la directory iniziale per il processo. Questo parametro viene usato solo se CommandLine non è NULL. Se InitialDirectory è NULL, viene usata la directory corrente per il server di elaborazione.

[in, optional] Environment

Specifica un blocco di ambiente per il nuovo processo. Un blocco di ambiente è costituito da un blocco con terminazione Null di stringhe con terminazione null. Ogni stringa è del modulo:

name=value

Si noti che gli ultimi due caratteri del blocco di ambiente sono entrambi NULL: uno per terminare la stringa e uno per terminare il blocco.

Se l'ambiente è impostato su NULL, il nuovo processo eredita il blocco di ambiente del server di elaborazione. Se il flag DEBUG_CREATE_PROCESS_THROUGH_RTL è impostato in OptionsBuffer, l'ambiente deve essere NULL.

[in] ProcessId

Specifica l'ID processo del processo di destinazione a cui verrà collegato il debugger. Se ProcessID è zero, il debugger verrà collegato al processo creato da CommandLine.

[in] AttachFlags

Specifica i flag che controllano il modo in cui il debugger si collega al processo di destinazione. Per informazioni dettagliate su questi flag, vedere DEBUG_ATTACH_XXX.

Valore restituito

Questo metodo può anche restituire valori di errore. Per altre informazioni, vedere Valori restituiti .

Codice restituito Descrizione
S_OK
Il metodo è stato eseguito correttamente.
E_INVALIDARG
Viene restituito se CommandLine è NULL e ProcessId è zero.

Commenti

Questo metodo è disponibile solo per il debug in modalità utente live.

Se CommandLine non è NULL e ProcessId non è zero, il motore creerà il processo in uno stato sospeso. Il motore riprenderà questo processo appena creato dopo che si connette correttamente al processo specificato in ProcessId.

Nota Il motore non è completamente collegato al processo finché non è stato chiamato il metodo WaitForEvent . Solo dopo che il processo ha generato un evento, ad esempio l'evento create-process, diventa disponibile nella sessione del debugger.
 
Per altre informazioni sulla creazione e l'associazione alle destinazioni in modalità utente live, vedere Destinazioni live User-Mode.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione dbgeng.h (includere Dbgeng.h)

Vedi anche

.attach (Attach to Process)

.create (Crea processo)

AbandonCurrentProcess

AttachProcess

ConnectProcessServer

CreateProcess2

DetachCurrentProcess

GetRunningProcessDescription

GetRunningProcessSystemIds

IDebugClient5

TerminateCurrentProcess