CreateProcess函数略解

CreateProcess 函数的第一和第二参数在创造进程时具有较为复杂的规则,在这里做一下简略的记要(详见MSDN):
	BOOL CreateProcess( 
	  LPCWSTR pszImageName, 
	  LPCWSTR pszCmdLine, 
	  LPSECURITY_ATTRIBUTES psaProcess, 
	  LPSECURITY_ATTRIBUTES psaThread, 
	  BOOL fInheritHandles, 
	  DWORD fdwCreate, 
	  LPVOID pvEnvironment, 
	  LPWSTR pszCurDir, 
	  LPSTARTUPINFOW psiStartInfo, 
	  LPPROCESS_INFORMATION pProcInfo
	); 
      第1个参数:_in LPCWSTR pszImageName 指向的是程序完整的文件名包括路径(即绝对路径)或且调用这个API函数的程序所在的相对
路径。当这个参数不为NULL时,这函数不会使用搜索路径而直接返回。:这个参数指向程序时须包含扩展名,它不会自动为你加上扩展名。
    第2个参数:_in LPCWSTR pszCmdLine 指向的是一个类似于命令行命令的字符串。它会认为第一个空格前面的字符串是程序路径,空
格后面的为程序附加参数。如果第二个空格前的不是程序路径的话,他为再尝试第二个空格之前的路径,以此类推直到整个字符串径尝试完;给
予的字符串路径测试完后还无法启动程序时,还会根据几种规则去搜索路径直到返回。(详见MSDN) :这个参数会为每个空格前尝试执行
时加上".exe"扩展名;通常将文件名和程序参数附给第2个参数。
    第3个参数:_in LPSECURITY_ATTRIBUTES psaProcess 不支持,设为NULL。
   第4个参数:_in LPSECURITY_ATTRIBUTES psaThread 不支持,设为NULL 。
    第5个参数:_in BOOL fInheritHandles 是否继承父进程可继承的句柄。为TRUE时,继承父进程可继承的句柄,并具有相同的值和访问
权限。
    第6个参数:_in DWORD fdwCreate 如果只是纯粹的想创建一个子进程就设为0,(详见MSDN)。
    第7个参数:_in LPVOID pvEnvironment 环境块,如果为NULL,使用调用进程的环境块。具体目前自己也不明白(详见MSDN)。 
      第8个参数:_in LPWSTR pszCurDir 指定新进程的运行时的路径,如果不指定则新进程的运行路径为该函数调用程序所在的运行路径。
    第9个参数:_in LPSTARTUPINFOW psiStartInfo 指定新进程运行时窗口的一些数据信息。了解这一结构体详见MSDN。
   第10个参数:_out LPPROCESS_INFORMATION pProcInfo 进程信息结构体,包含新进程的ID和句柄,还有新进程的主进程的句
柄和ID。在父进程中必须调用CloseHandle()关闭PROCESS_INFORMATION 结构体的hProcess和hThread减少资源对象的使用计数。
以便在子进程退出时,安全的清理系统资源。
CreateProcess函数是一个Windows API函数,用于创建一个新的进程。它的功能是根据指定的可执行文件名、命令行参数、进程安全属性等参数,创建一个新的进程,并返回新进程的句柄和标识符。 使用CreateProcess函数可以很方便地创建新的进程,实现并行执行多个任务的功能。它通常在编写Windows应用程序时使用,可以创建包括GUI和控制台程序在内的各种类型的进程。 使用CreateProcess函数需要提供一些必要的参数,包括可执行文件名和命令行参数,这些参数可以指定新进程要执行的具体任务。还可以指定一些可选的参数,如进程安全属性、标准输入输出的重定向等。通过这些参数的设置,可以灵活地控制新进程的行为。 CreateProcess函数创建新进程后,会返回一个句柄和标识符,可以用于其他操作,如监视进程状态、与新进程进行通信等。可以通过这些句柄和标识符来控制和管理新进程,实现进程间的交互和同步。 在使用CreateProcess函数时,需要注意一些问题,如确保传递给它的参数正确有效,保证新进程的可靠运行,防止资源泄漏等。同时,需要对新进程进行适当的管理和关闭,以避免产生僵尸进程或资源浪费问题。 总之,CreateProcess函数是一个重要的Windows API函数,能够创建新的进程,并提供了丰富的参数和功能,能够满足不同需求下的进程创建和管理。通过它的使用,可以实现进程间的并行执行和相互通信,提高应用程序的性能和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值