5)列在 PATH环境变量中的目录。
当然, 如果文件名中包含完整的路径, 系统就使用完整路径搜索可执行文件。 如果系统
找到了可执行文件,就创建一个新进程,并为它生成一个 4GB 的地址空间,从而使可执行
文件的代码和数据映射到这个地址空间。
(2)lpProcessAttribute和 lpThreadAttribute 是指向进程和线程安全属性结构的指针。当用
NULL表示时,为默认的安全性。
(3)FInheritHandles 表明新进程是否继承调用进程的打开句柄的副本。继承的句柄与原来
的句柄具有相同属性。
(4)FdwCreate 是几个标志的组合。其中包含以下几个标志:
1)CREATE_SUSPENDED : 新进程的主线程创建时处于挂起状态, 直到调用 ResumeThread
函数时才能运行。
2)DETACHED_PROCESS和 CREATE_NEW_CONSOLE相互排斥,二者不能同时使用。第一
个标志是创建没有控制台的进程, 第二个标志是创建新的有控制台的进程。 如果二者都没有
设置,进程将继承父进程的控制台。
3)CREATE_NEW_PROCESS_GROUP指定新进程是新进程组的根进程。 如果组中所有的进
程都共享同一控制台,则它们都将接收控制台的控制信号。
(5)lpvEnvironment 指向新进程的环境块。 如果此值为 NULL,进程会使用父进程的环境块。
环境块包含名称和值字符串,如搜索路径。
(6)lpszCurDir指向新进程的驱动器和目录。若为 NULL,将使用父进程的工作目录。
(7)lpsiStartInfo 指向新进程的主窗口外观和标准设备句柄。使用 GetStartupInfo 函数得到
父进程信息。
( 8) lpProcessInformation 指 向 包 含 返 回 的 进 程 和 线 程 句 柄 、 进 程 和 线 程 标 识 符 的
PROCESS_INFORMATION结构的指针。
返回值:如果进程和主线程创建成功,则返回 TRUE。
该函数可使系统创建一个进程内核对象和一个线程内核对象。且打开进程和线程对象,
并将与进程相关的每个对象句柄放入 PROCESS_INFORMATION的结构中。
PROCESS_INFORMATION结构定义如下:
Typedef struct _PROCESS_INFORMATION
{
HANDLE hProcess;//新创建进程的句柄
HANDLE hThread;//新创建进程的主线程的句柄
DWORD dwProcessId;//新创建进程的标识
DWORD dwThreadId;// 新创建进程的主线程的标识
}PROCESS_INFORMATION, *LPPROCESS_INFORMATION;
为了保护被创建的对象,系统定义了对象的安全属性结构,其定义如下:
Typedef struct _SECURITY_AFFRIBUTES
{
LPVOID lpSecurityDesriptor;
BOOL hInheritHandle;
}
其中,nLength 代表这个结构的以字节为单位的大小, lpSecurityDescriptor 是控制共享该对象
的安全描述符的指针。如果该值为 0,该对象被赋予默认的安全描述符。 bInheritHandle 是
一个布尔值,指示返回的对象句柄是否可被新创建进程继承, TRUE表示可以继承。
评论0
最新资源