CreateProcess中文详解

上传人:野鹰 文档编号:1089702 上传时间:2017-05-27 格式:TXT 页数:8 大小:12.52KB
返回 下载 相关 举报
CreateProcess中文详解_第1页
第1页 / 共8页
CreateProcess中文详解_第2页
第2页 / 共8页
CreateProcess中文详解_第3页
第3页 / 共8页
CreateProcess中文详解_第4页
第4页 / 共8页
CreateProcess中文详解_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《CreateProcess中文详解》由会员分享,可在线阅读,更多相关《CreateProcess中文详解(8页珍藏版)》请在金锄头文库上搜索。

1、CreateProcess说明:WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。函数原型:BOOL CreateProcess(LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes。LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags,LPVOID lpEnvironment, LPCTS

2、TR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation );参数:lpApplicationName:指向一个NULL结尾的、用来指定可执行模块的字符串。这个字符串可以使可执行模块的绝对路径,也可以是相对路径,在后一种情况下,函数使用当前驱动器和目录建立可执行模块的路径。这个参数可以被设为NULL,在这种情况下,可执行模块的名字必须处于 lpCommandLine 参数的最前面并由空格符与后面的字符分开。这个被指定的模块可以是一个Win32应用程序。如果适当的子

3、系统在当前计算机上可用的话,它也可以是其他类型的模块(如MS-DOS 或 OS/2)。在Windows NT中,如果可执行模块是一个16位的应用程序,那么这个参数应该被设置为NULL并且因该在lpCommandLine参数中指定可执行模块的名称。16位的应用程序是以DOS虚拟机或Win32上的Windows(WOW) 为进程的方式运行。lpCommandLine:指向一个NULL结尾的、用来指定要运行的命令行。这个参数可以为空,那么函数将使用参数指定的字符串当作要运行的程序的命令行。如果lpApplicationName和lpCommandLine参数都不为空,那么lpApplicationN

4、ame参数指定将要被运行的模块,lpCommandLine参数指定将被运行的模块的命令行。新运行的进程可以使用GetCommandLine函数获得整个命令行。C语言程序可以使用argc和argv参数。如果lpApplicationName参数为空,那么这个字符串中的 一个被空格分 的要 指定可执行模块名。如果文件名不 名,那么.exe将被 定为 的 名。如果文件名以一个 (.)结尾且 名,或文件名中 路径,.exe将不 被 后面。如果文件名中不 路径,Windows将 如下 序 这个可执行文件:1.当前应用程序的目录。2. 进程的目录。3.Windows 95:Windows系统目录,可以使用

5、GetSystemDirectory函数获得。Windows NT:32位Windows系统目录。可以使用GetSystemDirectory函数获得,目录名是SYSTEM32。4.在Windows NT中:16位Windows系统目录。不可以使用Win32函数获得这个目录, 是它 被 ,目录名是SYSTEM。5.Windows目录。可以使用GetWindowsDirectory函数获得这个目录。6. 在PATH 中的目录。如果被创建的进程是一个以MS-DOS或16位Windows为 的应用程序,lpCommandLine参数应该是一个以可执行文件的文件名作为 一个要 的绝对路径,因为这 可以

6、使32位Windows程序作的,这 设置lpCommandLine参数是最的。lpProcessAttributes:指向一个SECURITY_ATTRIBUTES结currency1,这个结currency1定是“的fi可以被子进程fl 。如果lpProcessAttributes参数为空(NULL),那么fi不被fl 。在Windows NT中:SECURITY_ATTRIBUTES结的lpSecurityDescriptor指定新进程的 符,如果参数为空,新进程使用 的 符。在Windows95中:SECURITY_ATTRIBUTES结的lpSecurityDescriptor被”。l

7、pThreadAttributes:指向一个SECURITY_ATTRIBUTES结currency1,这个结currency1定是“的fi可以被子进程fl 。如果lpThreadAttributes参数为空(NULL),那么fi不被fl 。在Windows NT中,SECURITY_ATTRIBUTES结的lpSecurityDescriptor指定主线程的 符,如果参数为空,主线程使用 的 符。在Windows95中:SECURITY_ATTRIBUTES结的lpSecurityDescriptor被”。bInheritHandles:指新进程是“用进程处fl fi。如果参数的 为,用进程

8、中的 一个可fl 的开fi都将被子进程fl 。被fl 的fi与原进程 相的 和。dwCreationFlags:指定 的、用来 类和进程的创建的。以下的创建可以以下面 的方式 的 方式 后指定。:CREATE_DEFAULT_ERROR_MODE:新的进程不fl 用进程的 模式。CreateProcess函数 新进程当前的 模式作为 。应用程序可以用SetErrorMode函数设置当前的 模式。这个对于那 运行在 件 下的 线程 程序是 分 用的。对于CreateProcess函数, 的行为是为新进程fl 用的 模式。设置这个以 的处方式。:CREATE_NEW_CONSOLE:新的进程将使用

9、一个新的 , 不是fl 进程的 。这个不与DETACHED_PROCESS一使用。:CREATE_NEW_PROCESS_GROUP:新进程将使一个进程的进程。进程种的进程都是进程的子进程。新进程的用 符与这个进程的 符是相的,由lpProcessInformation参数。进程 使用GenerateConsoleCtrlEvent函数 CTRL+C或CTRL+BREAK 一 进程。:CREATE_SEPARATE_WOW_VDM:( 适用于Windows NT)这个 当运行一个16位的Windows应用程序 是 的。如果被设置,新进程将 在一个 的虚拟DOS机(VDM)中运行。 , 情况下

10、的16位Windows应用程序都 在一个 的VDM中以线程的方式运行。 独运行一个16位程序的 是一个应用程序的崩溃结束这一个VDM的运行;其他那 在不VDM中运行的程序 fl续正 的运行。 的,在不VDM中运行的16位Windows应用程序 不的输入队 ,这意味着如果一个程序暂 失去响应,在独立的VDM中的应用程序够fl续获得输入。:CREATE_SHARED_WOW_VDM:( 适用于Windows NT)这个 当运行一个16位的Windows应用程序 是 的。如果WIN.INI中的Windows段的DefaultSeparateVDM选项被设置为,这个 使得CreateProcess函数

11、越过这个选项并在 的虚拟DOS机中运行新进程。:CREATE_SUSPENDED:新进程的主线程 以暂停的状态被创建,直 用ResumeThread函数被用 运行。:CREATE_UNICODE_ENVIRONMENT:如果被设置,由lpEnvironment参数指定的 块使用Unicode字符,如果为空, 块使用ANSI字符。:DEBUG_PROCESS:如果这个被设置,用进程将被当作一个试程序,并且新进程 被当作被试的进程。系统把被试程序 生的 试事件通知给试器。如果你使用这个创建进程, 用进程(用CreateProcess函数的进程)可以用WaitForDebugEvent函数。:DEB

12、UG_ONLY_THIS_PROCESS:如果此 被设置且用进程正在被试,新进程将为试用进程的试器的一个试对象。如果用进程 被试, 关试的行为就不 产生。:DETACHED_PROCESS:对于 进程,新进程 进程 的。新进程可以通过AllocConsole函数自己创建一个新的 。这个不可以与CREATE_NEW_CONSOLE一使用。dwCreationFlags参数还用来新进程的 类, 类用来定此进程的线程度的 级。如果下面的 级类都 被指定,那么 的 类是NORMAL_PRIORITY_CLASS,非被创建的进程是IDLE_PRIORITY_CLASS。在这种情况下子进程的 类是IDLE

13、_PRIORITY_CLASS。可以下面的中的一个:级:HIGH_PRIORITY_CLASS :指这个进程将执行 间临界的 务, 以它必须被立即运行以保证正确。这个 级的程序 于正级或空闲 级的程序。一个例子是Windows 务 表,为保证当用 用 可以立刻响应,放弃对系统负荷的考虑。确保在使用高 级 应该足够谨慎,因为一个高 级的CPU关联应用程序可以占用几乎的CPU可用 间。级:IDLE_PRIORITY_CLASS :指这个进程的线程 在系统空闲 运行并且可以被 高 级的 务断。例如屏幕保护程序。空闲 级 被子进程fl 。级:NORMAL_PRIORITY_CLASS :指这个进程 特

14、殊的 务度要求。级:REALTIME_PRIORITY_CLASS :指这个进程 可用的最高 级。一个 实 级的进程的线程可以断 其他进程线程的执行, 括正在执行重要 务的系统进程。例如,一个执行 间稍长一 的实 进程可导致磁盘缓存不足或鼠反映迟钝。lpEnvironment:指向一个新进程的 块。如果此参数为空,新进程使用用进程的 。一个 块存在于一个由以NULL结尾的字符串 的块中,这个块也是以NULL结尾的。 个字符串都是name=value的形式。因为相等被当作分 符, 以它不被 当作 名。与其使用应用程序提供的 块,不如直接把这个参数设为空,系统驱动器上的当前目录 息不 被自动传递给

15、新创建的进程。对于这个情况的探讨和如 处 ,请参见注释一节。块可以 Unicode或ANSI字符。如果lpEnvironment指向的 块 Unicode字符,那么dwCreationFlags字段的CREATE_UNICODE_ENVIRONMENT将被设置。如果块 ANSI字符,该将被清空。请注意一个ANSI 块是由两个零字节结束的:一个是字符串的结尾,一个用来结束这个快。一个Unicode 块石油四个零字节结束的:两个 表字符串结束,两个用来结束块。lpCurrentDirectory:指向一个以NULL结尾的字符串,这个字符串用来指定子进程的作路径。这个字符串必须是一个 驱动器名的绝对路径。如果这个参数为空,新进程将使用与用进程相的驱动器和目录。这个选项是一个需要启动启动应用程序并指定它们的驱动器和作目录的 程序的主要条件。lpStartupInfo:指向一

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号