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]指向 Win32SECURITY_ATTRIBUTES结构,它指定该进程的安全描述符。 如果lpProcessAttributes是 null,则该进程获取的默认安全描述符。

lpThreadAttributes
[in]指向 Win32SECURITY_ATTRIBUTES结构,它指定进程的主线程的安全描述符。 如果lpThreadAttributes是 null,该线程将获取的默认安全描述符。

bInheritHandles
[in]设置为true以指示的启动过程中,将继承调用进程中的每个可继承句柄或false以指示不继承句柄。 继承句柄具有与原始句柄相同的值和访问权限。

dwCreationFlags
[in]按位组合Win32 进程创建标志用于控制优先级类和启动过程的行为。

lpEnvironment
[in]指向新进程环境块的指针。

lpCurrentDirectory
[in]以 null 结尾的字符串,指定进程的当前目录的完整路径的指针。 如果此参数为 null,新进程将与调用的进程具有相同的当前驱动器和目录。

lpStartupInfo
[in]指向 Win32STARTUPINFOW结构,它指定窗口站、 桌面、 标准句柄和启动进程的主窗口的外观。

lpProcessInformation
[in]指向 Win32PROCESS_INFORMATION结构,它指定有关要启动该进程的标识信息。

debuggingFlags
[in]CorDebugCreateProcessFlags 枚举,用于指定调试选项的值。

ppProcess
[out]ICorDebugProcess 对象表示该进程的地址指针。

备注

此方法的参数都是不同于 Win32CreateProcess方法。

若要启用非托管的混合模式调试,请设置dwCreationFlags到 DEBUG_PROCESS |DEBUG_ONLY_THIS_PROCESS。 如果您想要使用仅托管调试,则不要设置这些标志。

如果调试程序和进程要调试 (附加的进程) 共享的单一控制台中,并使用互操作调试时,是否可以附加进程持有控制台锁并在调试事件处停止。 调试器将会一直阻止使用控制台的任何尝试。 若要避免此问题,在设置 CREATE_NEW_CONSOLE 标志dwCreationFlags参数。

例如-基于 IA-64 和 AMD64 基于平台 Win9x 和非 x86 平台上不支持互操作调试。

要求

平台︰请参阅系统要求

标头︰ CorDebug.idl、 CorDebug.h

库︰ CorGuids.lib

.NET framework 版本︰自 1.0 之后可用

  

时间: 2024-10-13 06:23:02

ICorDebug::CreateProcess 方法的相关文章

利刃 MVVMLight 8:DispatchHelper在多线程和调度中的使用

在应用程序中,线程可以被看做是应用程序的一个较小的执行单位.每个应用程序都至少拥有一个线程,我们称为主线程,这是在启动时调用应用程序的主方法时由操作系统分配启动的线程. 当调用和操作主线程的时候,该操作将动作添加到一个队列中.每个操作均按照将它们添加到队列中的顺序连续执行,但是可以通过为这些动作指定优先级来影响执行顺序,而负责管理此队列的对象称之为线程调度程序. 在很多情况下,我们启动新的线程主目的是执行操作(或等待某个操作的结果),而不会导致应用程序的其余部分被阻塞.密集型计算操作.高并发I/

java 程序执行原理

转自:http://blog.csdn.net/walkingmanc/article/details/6369487java 应用可以打包成jar 格式, jar格式其实只是一种很普通的压缩格式,与zip格式一样,只不过是它会在压缩文件的目录结构中增加一个META-INF/ MANIFEST.MF 的元文件. 我们知道,经过编译的字节码class文件可以直接放到java虚拟机去解释执行(JIT方式), 我们通过在命令行调用“java class文件的路径”就可以使用jvm(java.exe/j

Camel路由启动过程--续

上篇Camel启动路由过程中讲到启动Consumer,调用了DefaultCamelContext.startService(service)方法,下面是方法源码: private void startService(Service service) throws Exception { if (service instanceof StartupListener) { StartupListener listener = (StartupListener) service; addStartu

jbpmAPI-6

第六章流程. 6.1. What is BPMN 2.0 业务流程模型和符号(BPMN)2.0规范是OMG规范,不仅定义了一个标准的业务流程的图形化表述(如BPMN 1. x),但现在还包括执行语义定义的元素,和一个XML格式如何存储和共享过程定义.jBPM6允许您执行过程使用BPMN 2.0定义的XML格式.这意味着您可以使用所有不同的jBPM6工具模型.执行.管理和监控业务流程使用BPMN 2.0格式指定可执行业务流程.实际上,完整的BPMN 2.0规范还包括细节如何表示编排和协作.不过关注

CreateProcess的使用方法

使用编译器vs2008. 第一.第二个參数的使用方法: 样例: 使用ie打开指定的网页. 注意第二个參数是 可运行文件+命令行參数 #include "stdafx.h" #include <windows.h> #include <stdio.h> int main(int argc, char* argv[]) { STARTUPINFO si = { sizeof(si) }; PROCESS_INFORMATION pi; si.dwFlags = ST

Github上LeakCanary编译报错CreateProcess error=2的解决方法

现象说明: 从github上拉下LeakCanary编译时报错 1 CreateProcess error=2, ??Õ?»µ½?¶ 原因分析: 该现象是由于Windows中Gradle调用命令未加cmd.exe /C导致Windows无法识别命令 解决方案: 定位到报错的gradle代码为leakcanary-android模块的build.gradle中的gitSha()方法,修改代码为: 1 def gitSha() { 2 return 'cmd.exe /C git rev-parse

[转]vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess

三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂.    WinExec 两个参数,前一个指定路径,后一个指定显示方式.    ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等.    Cr

非常简单的利用CreateProcess注入DLL的方法

[cpp] view plain copy TCHAR szDll[] = TEXT("d:\\test.dll"); STARTUPINFO si = {0}; PROCESS_INFORMATION pi = {0}; si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = SW_SHOW; TCHAR szCommandLine[MAX_PATH] = TEXT("C:\\WINDO

转载,IBM一片文章,关于线程的start方法执行

原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-processthread/#icomments Java 中的进程与线程 进程与线程在程序开发中无疑占有极其重要的地位,而 Java 语言为了能提供统一的.与平台无关的关于进程和线程的编程接口,必然要对操作系统提供的相关功能做进一步封装.本文主要介绍 Java 中关于进程与线程的相关封装类,揭示如何创建 Java 进程与线程,Java 封装类和实际的系统本地进程和线程是如何对应的,以及使用