Compartir a través de


Marcas de creación de procesos

Las siguientes marcas de creación de procesos las usan las funciones CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW y CreateProcessWithTokenW. Se pueden especificar en cualquier combinación, excepto como se indica.

Ejemplo

     BOOL creationResult;
    
    creationResult = CreateProcess(
        NULL,                   // No module name (use command line)
        cmdLine,                // Command line
        NULL,                   // Process handle not inheritable
        NULL,                   // Thread handle not inheritable
        FALSE,                  // Set handle inheritance to FALSE
        NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP, // creation flags
        NULL,                   // Use parent's environment block
        NULL,                   // Use parent's starting directory 
        &startupInfo,           // Pointer to STARTUPINFO structure
        &processInformation);   // Pointer to PROCESS_INFORMATION structure

Ejemplo de ejemplos clásicos de Windows en GitHub.

Marcas

Constante o valor Descripción
CREATE_BREAKAWAY_FROM_JOB
0x01000000
Los procesos secundarios de un proceso asociado a un trabajo no están asociados al trabajo.
Si el proceso de llamada no está asociado a un trabajo, esta constante no tiene ningún efecto. Si el proceso de llamada está asociado a un trabajo, el trabajo debe establecer el límite de JOB_OBJECT_LIMIT_BREAKAWAY_OK .
CREATE_DEFAULT_ERROR_MODE
0x04000000
El nuevo proceso no hereda el modo de error del proceso de llamada. En su lugar, el nuevo proceso obtiene el modo de error predeterminado.
Esta característica es especialmente útil para las aplicaciones de shell multiproceso que se ejecutan con errores duros deshabilitados.
El comportamiento predeterminado es para que el nuevo proceso herede el modo de error del autor de la llamada. Al establecer esta marca, se cambia ese comportamiento predeterminado.
CREATE_NEW_CONSOLE
0x00000010
El nuevo proceso tiene una nueva consola, en lugar de heredar la consola de su elemento primario (el valor predeterminado). Para obtener más información, consulte Creación de una consola.
Esta marca no se puede usar con DETACHED_PROCESS.
CREATE_NEW_PROCESS_GROUP
0x00000200
El nuevo proceso es el proceso raíz de un nuevo grupo de procesos. El grupo de procesos incluye todos los procesos descendientes de este proceso raíz. El identificador de proceso del nuevo grupo de procesos es el mismo que el identificador de proceso, que se devuelve en el parámetro lpProcessInformation . La función GenerateConsoleCtrlEvent usa los grupos de procesos para habilitar el envío de una señal CTRL+BREAK a un grupo de procesos de consola.
Si se especifica esta marca, las señales CTRL+C se deshabilitarán para todos los procesos del nuevo grupo de procesos.
Esta marca se omite si se especifica con CREATE_NEW_CONSOLE.
CREATE_NO_WINDOW
0x08000000
El proceso es una aplicación de consola que se ejecuta sin una ventana de consola. Por lo tanto, no se establece el identificador de consola de la aplicación.
Esta marca se omite si la aplicación no es una aplicación de consola o si se usa con CREATE_NEW_CONSOLE o DETACHED_PROCESS.
CREATE_PROTECTED_PROCESS
0x00040000
El proceso se va a ejecutar como un proceso protegido. El sistema restringe el acceso a procesos protegidos y a los subprocesos de procesos protegidos. Para obtener más información sobre cómo los procesos pueden interactuar con los procesos protegidos, consulte Derechos de acceso y seguridad de procesos.
Para activar un proceso protegido, el binario debe tener una firma especial. Microsoft proporciona esta firma, pero no está disponible actualmente para archivos binarios que no son de Microsoft. Actualmente hay cuatro procesos protegidos: base multimedia, motor de audio, informes de errores de Windows y sistema. Los componentes que se cargan en estos archivos binarios también deben estar firmados. Las empresas multimedia pueden aprovechar los dos primeros procesos protegidos. Para obtener más información, vea Información general sobre la ruta de acceso de medios protegidos.
Windows Server 2003 y Windows XP: Este valor no se admite.
CREATE_PRESERVE_CODE_AUTHZ_LEVEL
0x02000000
Permite al autor de la llamada ejecutar un proceso secundario que omite las restricciones de proceso que normalmente se aplicarían automáticamente al proceso.
CREATE_SECURE_PROCESS
0x00400000
Esta marca permite que se inicien procesos seguros, que se ejecutan en el entorno de seguridad de Virtualization-Based.
CREATE_SEPARATE_WOW_VDM
0x00000800
Esta marca solo es válida al iniciar una aplicación basada en Windows de 16 bits. Si se establece, el nuevo proceso se ejecuta en una máquina VIRTUAL DOS privada (VDM). De forma predeterminada, todas las aplicaciones basadas en Windows de 16 bits se ejecutan como subprocesos en un único VDM compartido. La ventaja de ejecutarse por separado es que un bloqueo solo finaliza el VDM único; cualquier otro programa que se ejecute en máquinas virtuales distintas seguirá funcionando con normalidad. Además, las aplicaciones basadas en Windows de 16 bits que se ejecutan en máquinas virtuales independientes tienen colas de entrada independientes. Esto significa que si una aplicación deja de responder momentáneamente, las aplicaciones de máquinas virtuales independientes siguen recibiendo entradas. La desventaja de ejecutarse por separado es que se necesita mucho más memoria para hacerlo. Debe usar esta marca solo si el usuario solicita que las aplicaciones de 16 bits se ejecuten en su propio VDM.
CREATE_SHARED_WOW_VDM
0x00001000
La marca solo es válida al iniciar una aplicación basada en Windows de 16 bits. Si el modificador DefaultSeparateVDM de la sección Windows de WIN.INI es TRUE, esta marca invalida el modificador. El nuevo proceso se ejecuta en la máquina DOS virtual compartida.
CREATE_SUSPENDED
0x00000004
El subproceso principal del nuevo proceso se crea en un estado suspendido y no se ejecuta hasta que se llama a la función ResumeThread .
CREATE_UNICODE_ENVIRONMENT
0x00000400
Si se establece esta marca, el bloque de entorno al que apunta lpEnvironment usa caracteres Unicode. De lo contrario, el bloque de entorno usa caracteres ANSI.
DEBUG_ONLY_THIS_PROCESS
0x00000002
El subproceso que realiza la llamada inicia y depura el nuevo proceso. Puede recibir todos los eventos de depuración relacionados mediante la función WaitForDebugEvent .
DEBUG_PROCESS
0x00000001
El subproceso que realiza la llamada inicia y depura el nuevo proceso y todos los procesos secundarios creados por el nuevo proceso. Puede recibir todos los eventos de depuración relacionados mediante la función WaitForDebugEvent .
Un proceso que usa DEBUG_PROCESS se convierte en la raíz de una cadena de depuración. Esto continúa hasta que se crea otro proceso de la cadena con DEBUG_PROCESS.
Si esta marca se combina con DEBUG_ONLY_THIS_PROCESS, el autor de la llamada depura solo el nuevo proceso, no ningún proceso secundario.
DETACHED_PROCESS
0x00000008
En el caso de los procesos de consola, el nuevo proceso no hereda la consola de su elemento primario (el valor predeterminado). El nuevo proceso puede llamar a la función AllocConsole más adelante para crear una consola. Para obtener más información, consulte Creación de una consola.
Este valor no se puede usar con CREATE_NEW_CONSOLE.
EXTENDED_STARTUPINFO_PRESENT
0x00080000
El proceso se crea con información de inicio extendida; El parámetro lpStartupInfo especifica una estructura STARTUPINFOEX .
Windows Server 2003 y Windows XP: Este valor no se admite.
INHERIT_PARENT_AFFINITY
0x00010000
El proceso hereda la afinidad de su elemento primario. Si el proceso primario tiene subprocesos en más de un grupo de procesadores, el nuevo proceso hereda la afinidad relativa al grupo de un grupo arbitrario en uso por el elemento primario.
Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite.

Comentarios

En Windows de 32 bits, las aplicaciones de 16 bits se simulan mediante ntvdm.exe, no se ejecutan como procesos individuales. Por lo tanto, las marcas de creación de procesos se aplican a ntvdm.exe. Dado que ntvdm.exe persiste después de ejecutar la primera aplicación de 16 bits, al iniciar otra aplicación de 16 bits, no se aplican las nuevas marcas de creación, excepto CREATE_NEW_CONSOLE y CREATE_SEPARATE_WOW_VDM, que crean un nuevo ntvdm.exe.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado
WinBase.h (incluya Windows.h)