Compartir a través de


Método IDebugClient5::CreateProcessAndAttach2 (dbgeng.h)

El método CreateProcessAndAttach2 crea un proceso a partir de una línea de comandos especificada y, a continuación, se adjunta a ese proceso u otro proceso en modo de usuario.

Sintaxis

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

Parámetros

[in] Server

Especifica el servidor de procesos que se va a usar para asociarlo al proceso. Si Server es cero, el motor se conectará al proceso local sin usar un servidor de procesos.

[in, optional] CommandLine

Especifica la línea de comandos que se va a ejecutar para crear el nuevo proceso. Si CommandLine es NULL, no se crea ningún proceso y estos métodos usarán ProcessId para asociarse a un proceso existente.

[in] OptionsBuffer

Especifica las opciones de creación de procesos. OptionsBuffer es un puntero a una estructura de DEBUG_CREATE_PROCESS_OPTIONS .

[in] OptionsBufferSize

Especifica el tamaño del búfer OptionsBuffer. Debe establecerse en sizeof(DEBUG_CREATE_PROCESS_OPTIONS).

[in, optional] InitialDirectory

Especifica el directorio inicial del proceso. Este parámetro solo se usa si CommandLine no es NULL. Si InitialDirectory es NULL, se usa el directorio actual del servidor de procesos.

[in, optional] Environment

Especifica un bloque de entorno para el nuevo proceso. Un bloque de entorno consta de un bloque terminado en null de cadenas terminadas en NULL. Cada cadena tiene el formato:

name=value

Tenga en cuenta que los dos últimos caracteres del bloque de entorno son NULL: uno para finalizar la cadena y otro para finalizar el bloque.

Si Environment se establece en NULL, el nuevo proceso hereda el bloque de entorno del servidor de procesos. Si la marca DEBUG_CREATE_PROCESS_THROUGH_RTL se establece en OptionsBuffer, El entorno debe ser NULL.

[in] ProcessId

Especifica el identificador de proceso del proceso de destino al que se asociará el depurador. Si ProcessID es cero, el depurador se asociará al proceso que creó a partir de CommandLine.

[in] AttachFlags

Especifica las marcas que controlan cómo se asocia el depurador al proceso de destino. Para más información sobre estas marcas, consulte DEBUG_ATTACH_XXX.

Valor devuelto

Este método también puede devolver valores de error. Consulte Valores devueltos para obtener más detalles.

Código devuelto Descripción
S_OK
Método realizado correctamente.
E_INVALIDARG
Se devuelve si CommandLine es NULL y ProcessId es cero.

Comentarios

Este método solo está disponible para la depuración en modo usuario activo.

Si CommandLine no es NULL y ProcessId no es cero, el motor creará el proceso en un estado suspendido. El motor reanudará este proceso recién creado después de que se conecte correctamente al proceso especificado en ProcessId.

Nota El motor no se asocia completamente al proceso hasta que se ha llamado al método WaitForEvent . Solo después de que el proceso haya generado un evento (por ejemplo, el evento create-process), estará disponible en la sesión del depurador.
 
Para obtener más información sobre cómo crear y adjuntar a destinos en modo de usuario dinámicos, consulte Destinos de Live User-Mode.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado dbgeng.h (incluir Dbgeng.h)

Consulte también

.attach (Asociar al proceso)

.create (Crear proceso)

AbandonCurrentProcess

AttachProcess

ConnectProcessServer

CreateProcess2

DetachCurrentProcess

GetRunningProcessDescription

GetRunningProcessSystemIds

IDebugClient5

TerminateCurrentProcess