ICorDebug::CreateProcess 方法
在调试器的控制下启动某个进程及其主线程。
语法
HRESULT CreateProcess (
[in] LPCWSTR lpApplicationName,
[in] LPWSTR lpCommandLine,
[in] LPSECURITY_ATTRIBUTES lpProcessAttributes,
[in] LPSECURITY_ATTRIBUTES lpThreadAttributes,
[in] BOOL bInheritHandles,
[in] DWORD dwCreationFlags,
[in] PVOID lpEnvironment,
[in] LPCWSTR lpCurrentDirectory,
[in] LPSTARTUPINFOW lpStartupInfo,
[in] LPPROCESS_INFORMATION lpProcessInformation,
[in] CorDebugCreateProcessFlags debuggingFlags,
[out] ICorDebugProcess **ppProcess
);
参数
lpApplicationName
[in]指向以 null 结尾的字符串的指针,该字符串指定要由启动的进程执行的模块。 该模块在调用进程的安全上下文中执行。
lpCommandLine
[in]指向以 null 结尾的字符串的指针,该字符串指定要由启动的进程执行的命令行。 应用程序名称(例如“SomeApp.exe”)必须是第一个参数。
lpProcessAttributes
[in]指向 Win32 SECURITY_ATTRIBUTES
结构的指针,该结构指定进程的安全描述符。 如果 lpProcessAttributes
为 null,则进程将获取默认的安全描述符。
lpThreadAttributes
[in]指向 Win32 SECURITY_ATTRIBUTES
结构的指针,该结构指定进程的主线程的安全描述符。 如果 lpThreadAttributes
为 null,则线程将获取默认的安全描述符。
bInheritHandles
[in]设置为 true
指示调用进程中的每个可继承句柄都由启动的进程继承,或 false
指示句柄未继承。 继承的句柄与原始句柄具有相同的值和访问权限。
dwCreationFlags
[in]Win32 进程创建标志的按位组合,用于控制优先级类和启动进程的行为。
lpEnvironment
[in]指向新进程的环境块的指针。
lpCurrentDirectory
[in]指向以 null 结尾的字符串的指针,该字符串指定进程当前目录的完整路径。 如果此参数为 null,则新进程将与调用进程具有相同的当前驱动器和目录。
lpStartupInfo
[in]指向 Win32 STARTUPINFOW
结构的指针,该结构指定启动进程的窗口工作站、桌面、标准句柄和主窗口的外观。
lpProcessInformation
[in]指向 Win32 PROCESS_INFORMATION
结构的指针,该结构指定要启动的进程的标识信息。
debuggingFlags
[in]指定调试选项的 CorDebugCreateProcessFlags 枚举的值。
ppProcess
[out]指向表示进程的 ICorDebugProcess 对象的地址的指针。
注解
此方法的参数与 Win32 CreateProcess
方法的参数相同。
若要启用非托管混合模式调试,请将 dwCreationFlags
设置为 DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS。 如果只想使用托管调试,请不要设置这些标志。
如果调试器和要调试的进程(附加的进程)共享一个控制台,并且使用互操作调试,则附加的进程可能会持有控制台锁并在发生调试事件时停止。 然后,调试器将阻止任何使用控制台的尝试。 若要避免此问题,请在 dwCreationFlags
参数中设置 CREATE_NEW_CONSOLE 标志。
Win9x 和非 x86 平台(例如基于 IA-64 和基于 AMD64 的平台)不支持互操作调试。
要求
平台:请参阅系统要求。
标头:CorDebug.idl、CorDebug.h
库:CorGuids.lib
.NET Framework 版本:自 1.0 起可用