Debugging Tools for Windows |
The CreateProcessAndAttach and CreateProcessAndAttachWide methods create a process from a specified command line, then attach to another user-mode process. The created process is suspended and only allowed to execute when the attach has completed. This allows rough synchronization when debugging both, client and server processes.
HRESULT
IDebugClient::CreateProcessAndAttach(
IN ULONG64 Server,
IN OPTIONAL PSTR CommandLine,
IN ULONG CreateFlags,
IN ULONG ProcessId,
IN ULONG AttachFlags
);
HRESULT
IDebugClient3::CreateProcessAndAttachWide(
IN ULONG64 Server,
IN OPTIONAL PWSTR CommandLine,
IN ULONG CreateFlags,
IN ULONG ProcessId,
IN ULONG AttachFlags
);
#ifdef UNICODE
#define CreateProcessAndAttachT CreateProcessAndAttachWide
#else
#define CreateProcessAndAttachT CreateProcessAndAttach
#endif
This method may also return error values. See Return Values for more details.
CreateProcessAndAttach is available in all versions of IDebugClient. CreateProcessAndAttachWide is available in IDebugClient3 and later versions.
This method is available only for live user-mode debugging.
If CommandLine is not NULL and ProcessId is not zero, then the engine will create the process in a suspended state. The engine will resume this newly created process after it successfully connects to the process specified in ProcessId.
Note The engine doesn't completely attach to the process until the WaitForEvent method has been called. Only after the process has generated an event — for example, the create-process event — does it become available in the debugger session.
For more information about creating and attaching to live user-mode targets, see Live User-Mode Targets.
Headers: Defined in dbgeng.h. Include dbgeng.h.
CreateProcessAndAttach2, AttachProcess, .attach (Attach to Process), .create (Create Process), ConnectProcessServer, CreateProcess2, GetRunningProcessSystemIds, GetRunningProcessDescription , DetachCurrentProcess, TerminateCurrentProcess, AbandonCurrentProcess