CreateProcess函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013230291/article/details/85206892
BOOL CreateProcess(
PCTSTR pszApplicationName,
PTSTR pszCommandLine,
PSECURITY_ATTRIBUTES psaProcess,
PSECURITY_ATTRIBUTES psaThread,
BOOL bInheritHandles,
DWORD fdwCreate,
PVOID pvEnvironment,
PCTSTR pszCurDir,
PSTARTUPINFO psiStartInfo,
PROCESS_INFORMATION ppiProcInfo );

说明:
一个线程调用CreateProcess时,系统将创建一个进程内核对象,进程内核对象不是进程本身,而是操作系统用来管理这个进程的一个小型数据结构,然后系统为新进程创建一个虚拟地址空间,并将可执行文件(以及所有必要的dll)的代码及数据加载到进程的地址空间。
然后系统为新进程的主线程创建一个线程内核对象,与进程内核对象一样,线程内核对象同样是一个小型数据结构,操作系统用它来管理这个线程。
如果成功创建了新进程和新线程,函数将返回TRUE。
注:CreateProcess在进程并未完全初始化之前就会返回TRUE。如果一个EXE的某个DLL找不到或者不能正确初始化,进程会终止。但由于CreateProcess返回TRUE,所以父进程不会注意到任何初始化问题,这也是我们调用该函数时,明明返回了TRUE,但exe并未真正运行的原因

参数说明:
1) PCTSTR pszApplicationName
即应用程序exe路径,pszApplicationName为常量字符创,即const char* 类型。
2) PTSTR pszCommandLine
exe的命令行运行参数,为char* 类型。
3)PSECURITY_ATTRIBUTES psaProcess,PSECURITY_ATTRIBUTES psaThread
分别为进程安全描述符以及线程安全描述符,如果指定为NULL,则系统为这两个内核对象指定默认的安全描述符。
4 ) BOOL bInheritHandles
如果只创建一个进程,一般设为FALSE;

猜你喜欢

转载自blog.csdn.net/u013230291/article/details/85206892