Condividi tramite


Metodo IDebugClient5::CreateProcessAndAttach2Wide (dbgeng.h)

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

Sintassi

HRESULT CreateProcessAndAttach2Wide(
  [in]           ULONG64 Server,
  [in, optional] PWSTR   CommandLine,
  [in]           PVOID   OptionsBuffer,
  [in]           ULONG   OptionsBufferSize,
  [in, optional] PCWSTR  InitialDirectory,
  [in, optional] PCWSTR  Environment,
  [in]           ULONG   ProcessId,
  [in]           ULONG   AttachFlags
);

Parametri

[in] Server

Specifica il server di elaborazione da utilizzare per il collegamento al 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 connettersi a 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. Deve essere impostato 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 utilizzata 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 formato:

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 Environment è 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, Environment deve essere NULL.

[in] ProcessId

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

[in] AttachFlags

Specifica i flag che controllano la modalità di connessione del debugger 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 altri dettagli, vedere valori restituiti.

Codice restituito Descrizione
S_OK
Il metodo ha avuto esito positivo.
E_INVALIDARG
Viene restituito se CommandLine è NULL e ProcessId è zero.

Osservazioni

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 viene 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 la connessione a destinazioni in modalità utente live, vedere Destinazioni User-Mode live.

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione dbgeng.h (include Dbgeng.h)

Vedere anche

.attach (Attach to Process)

.create (crea processo)

abandonCurrentProcess

AttachProcess

ConnectProcessServer

CreateProcess2

detachCurrentProcess

GetRunningProcessDescription

GetRunningProcessSystemIds

IDebugClient5

TerminateCurrentProcess