创建进程函数C语言 c++创建进程函数( 二 )


在Windows NT中:SECURITY_ATTRIBUTES结构的lpSecurityDescriptor成员指定了新进程的安全描述符,如果参数为空 , 新进程使用默认的安全描述符 。
lpThreadAttributes
同lpProcessAttribute,不过这个参数决定的是线程是否被继承.通常置为NULL.
bInheritHandles
指示新进程是否从调用进程处继承了句柄 。
如果参数的值为真,调用进程中的每一个可继承的打开句柄都将被子进程继承 。被继承的句柄与原进程拥有完全相同的值和访问权限 。
dwCreationFlags
指定附加的、用来控制优先类和进程的创建的标志 。以下的创建标志可以以除下面列出的方式外的任何方式组合后指定 。
⑴值:CREATE_DEFAULT_ERROR_MODE
含义:新的进程不继承调用进程的错误模式 。CreateProcess函数赋予新进程当前的默认错误模式作为替代 。应用程序可以调用SetErrorMode函数设置当前的默认错误模式 。
这个标志对于那些运行在没有硬件错误环境下的多线程外壳程序是十分有用的 。
对于CreateProcess函数,默认的行为是为新进程继承调用者的错误模式 。设置这个标志以改变默认的处理方式 。
⑵值:CREATE_NEW_CONSOLE
含义:新的进程将使用一个新的控制台,而不是继承父进程的控制台 。这个标志不能与DETACHED_PROCESS标志一起使用 。
⑶值:CREATE_NEW_PROCESS_GROUP
含义:新进程将是一个进程树的根进程 。进程树中的全部进程都是根进程的子进程 。新进程树的用户标识符与这个进程的标识符是相同的 , 由lpProcessInformation参数返回 。进程树经常使用GenerateConsoleCtrlEvent函数允许发送CTRL+C或CTRL+BREAK信号到一组控制台进程 。
⑷值:CREATE_SEPARATE_WOW_VDM
如果被设置,新进程将会在一个私有的虚拟DOS机(VDM)中运行 。另外,默认情况下所有的16位Windows应用程序都会在同一个共享的VDM中以线程的方式运行 。单独运行一个16位程序的优点是一个应用程序的崩溃只会结束这一个VDM的运行创建进程函数C语言;其他那些在不同VDM中运行的程序会继续正常的运行 。同样的,在不同VDM中运行的16位Windows应用程序拥有不同的输入队列,这意味着如果一个程序暂时失去响应,在独立的VDM中的应用程序能够继续获得输入 。
⑸值:CREATE_SHARED_WOW_VDM
如果WIN.INI中的Windows段的DefaultSeparateVDM选项被设置为真,这个标识使得CreateProcess函数越过这个选项并在共享的虚拟DOS机中运行新进程 。
⑹值:CREATE_SUSPENDED
含义:新进程的主线程会以暂停的状态被创建,直到调用ResumeThread函数被调用时才运行 。
⑺值:CREATE_UNICODE_ENVIRONMENT
含义:如果被设置,由lpEnvironment参数指定的环境块使用Unicode字符,如果为空,环境块使用ANSI字符 。
⑻值:DEBUG_PROCESS
含义:如果这个标志被设置,调用进程将被当做一个调试程序,并且新进程会被当做被调试的进程 。系统把被调试程序发生的所有调试事件通知给调试器 。
如果你使用这个标志创建进程 , 只有调用进程(调用CreateProcess函数的进程)可以调用WaitForDebugEvent函数 。
⑼值:DEBUG_ONLY_THIS_PROCESS
含义:如果此标志没有被设置且调用进程正在被调试,新进程将成为调试调用进程的调试器的另一个调试对象 。如果调用进程没有被调试,有关调试的行为就不会产生 。
⑽值:DETACHED_PROCESS
含义:对于控制台进程,新进程没有访问父进程控制台的权限 。新进程可以通过AllocConsole函数自己创建一个新的控制台 。这个标志不可以与CREATE_NEW_CONSOLE标志一起使用 。
〔11〕值:CREATE_NO_WINDOW

推荐阅读