Partager via


IDebugClient5 ::CreateProcessAndAttach2, méthode (dbgeng.h)

La méthode CreateProcessAndAttach2 crée un processus à partir d’une ligne de commande spécifiée, puis joint à ce processus ou à un autre processus en mode utilisateur.

Syntaxe

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
);

Paramètres

[in] Server

Spécifie le serveur de processus à utiliser pour l’attacher au processus. Si serveur est égal à zéro, le moteur se connecte au processus local sans utiliser de serveur de processus.

[in, optional] CommandLine

Spécifie la ligne de commande à exécuter pour créer le nouveau processus. Si CommandLine est NULL, aucun processus n’est créé et ces méthodes utilisent ProcessId pour l’attacher à un processus existant.

[in] OptionsBuffer

Spécifie les options de création de processus. OptionsBuffer est un pointeur vers une structure DEBUG_CREATE_PROCESS_OPTIONS.

[in] OptionsBufferSize

Spécifie la taille de la mémoire tampon OptionsBuffer. Cette valeur doit être définie sur sizeof(DEBUG_CREATE_PROCESS_OPTIONS).

[in, optional] InitialDirectory

Spécifie le répertoire de démarrage du processus. Ce paramètre n’est utilisé que si CommandLine n’est pas NULL. Si InitialDirectory est NULL, le répertoire actif du serveur de processus est utilisé.

[in, optional] Environment

Spécifie un bloc d’environnement pour le nouveau processus. Un bloc d’environnement se compose d’un bloc terminé par null de chaînes terminées par null. Chaque chaîne est de la forme :

name=value

Notez que les deux derniers caractères du bloc d’environnement sont tous deux NULL: un pour arrêter la chaîne et l’autre pour arrêter le bloc.

Si 'environnement est défini sur NULL, le nouveau processus hérite du bloc d’environnement du serveur de processus. Si l’indicateur de DEBUG_CREATE_PROCESS_THROUGH_RTL est défini dans OptionsBuffer, 'environnement doit être NULL.

[in] ProcessId

Spécifie l’ID de processus du processus cible auquel le débogueur s’attache. Si ProcessID est égal à zéro, le débogueur s’attache au processus qu’il a créé à partir de CommandLine .

[in] AttachFlags

Spécifie les indicateurs qui contrôlent la façon dont le débogueur s’attache au processus cible. Pour plus d’informations sur ces indicateurs, consultez DEBUG_ATTACH_XXX.

Valeur de retour

Cette méthode peut également retourner des valeurs d’erreur. Pour plus d’informations, consultez valeurs de retour.

Retourner le code Description
S_OK
La méthode a réussi.
E_INVALIDARG
Cette valeur est retournée si CommandLine est NULL et ProcessId est égal à zéro.

Remarques

Cette méthode est disponible uniquement pour le débogage en mode utilisateur en direct.

Si CommandLine n’est pas NULL et ProcessId n’est pas zéro, le moteur crée le processus dans un état suspendu. Le moteur reprend ce processus nouvellement créé une fois qu’il se connecte correctement au processus spécifié dans ProcessId.

Remarque Le moteur n’est pas entièrement attaché au processus tant que la méthode WaitForEvent n’a pas été appelée. Une fois que le processus a généré un événement (par exemple, l’événement create-process) devient disponible dans la session du débogueur.
 
Pour plus d’informations sur la création et l’attachement à des cibles en mode utilisateur en direct, consultez Cibles live User-Mode.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête dbgeng.h (include Dbgeng.h)

Voir aussi

.attach (Attacher au processus)

.create (Créer un processus)

AbandonCurrentProcess

AttachProcess

ConnectProcessServer

CreateProcess2

DetachCurrentProcess

GetRunningProcessDescription

GetRunningProcessSystemIds

IDebugClient5

TerminateCurrentProcess