Indicateurs de création de processus

Les indicateurs de création de processus suivants sont utilisés par les fonctions CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW et CreateProcessWithTokenW . Ils peuvent être spécifiés dans n’importe quelle combinaison, sauf indication contraire.

Exemple

     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

Exemple d’exemples windows classiques sur GitHub.

Indicateurs

Constante/valeur Description
CREATE_BREAKAWAY_FROM_JOB
0x01000000
Les processus enfants d’un processus associé à un travail ne le sont pas.
Si le processus appelant n’est pas associé à un travail, cette constante n’a aucun effet. Si le processus appelant est associé à un travail, celui-ci doit définir la limite de JOB_OBJECT_LIMIT_BREAKAWAY_OK .
CREATE_DEFAULT_ERROR_MODE
0x04000000
Le nouveau processus n’hérite pas du mode d’erreur du processus appelant. Au lieu de cela, le nouveau processus obtient le mode d’erreur par défaut.
Cette fonctionnalité est particulièrement utile pour les applications shell multithread qui s’exécutent avec des erreurs matérielles désactivées.
Le comportement par défaut est que le nouveau processus hérite du mode d’erreur de l’appelant. La définition de cet indicateur modifie ce comportement par défaut.
CREATE_NEW_CONSOLE
0x00000010
Le nouveau processus a une nouvelle console, au lieu d’hériter de la console de son parent (valeur par défaut). Pour plus d’informations, consultez Création d’une console.
Cet indicateur ne peut pas être utilisé avec DETACHED_PROCESS.
CREATE_NEW_PROCESS_GROUP
0x00000200
Le nouveau processus est le processus racine d’un nouveau groupe de processus. Le groupe de processus inclut tous les processus descendants de ce processus racine. L’identificateur de processus du nouveau groupe de processus est identique à l’identificateur de processus, qui est retourné dans le paramètre lpProcessInformation . Les groupes de processus sont utilisés par la fonction GenerateConsoleCtrlEvent pour permettre l’envoi d’un signal CTRL+BREAK à un groupe de processus de console.
Si cet indicateur est spécifié, les signaux CTRL+C sont désactivés pour tous les processus au sein du nouveau groupe de processus.
Cet indicateur est ignoré s’il est spécifié avec CREATE_NEW_CONSOLE.
CREATE_NO_WINDOW
0x08000000
Le processus est une application console en cours d’exécution sans fenêtre de console. Par conséquent, le handle de console de l’application n’est pas défini.
Cet indicateur est ignoré si l’application n’est pas une application console ou si elle est utilisée avec CREATE_NEW_CONSOLE ou DETACHED_PROCESS.
CREATE_PROTECTED_PROCESS
0x00040000
Le processus doit être exécuté en tant que processus protégé. Le système limite l’accès aux processus protégés et aux threads des processus protégés. Pour plus d’informations sur la façon dont les processus peuvent interagir avec les processus protégés, consultez Droits d’accès et de sécurité des processus.
Pour activer un processus protégé, le fichier binaire doit avoir une signature spéciale. Cette signature est fournie par Microsoft, mais n’est actuellement pas disponible pour les fichiers binaires non-Microsoft. Il existe actuellement quatre processus protégés : media foundation, moteur audio, rapport d’erreurs Windows et système. Les composants qui se chargent dans ces fichiers binaires doivent également être signés. Les entreprises multimédias peuvent tirer parti des deux premiers processus protégés. Pour plus d’informations, consultez Vue d’ensemble du chemin d’accès du média protégé.
Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge.
CREATE_PRESERVE_CODE_AUTHZ_LEVEL
0x02000000
Permet à l’appelant d’exécuter un processus enfant qui contourne les restrictions de processus qui seraient normalement appliquées automatiquement au processus.
CREATE_SECURE_PROCESS
0x00400000
Cet indicateur permet aux processus sécurisés qui s’exécutent dans l’environnement de sécurité Virtualization-Based de lancer.
CREATE_SEPARATE_WOW_VDM
0x00000800
Cet indicateur est valide uniquement lors du démarrage d’une application Windows 16 bits. S’il est défini, le nouveau processus s’exécute sur une machine virtuelle DOS (VDM) privée. Par défaut, toutes les applications Windows 16 bits s’exécutent en tant que threads dans un seul VDM partagé. L’avantage de l’exécution séparément est qu’un plantage ne termine que le seul VDM ; Tous les autres programmes exécutés sur des machines virtuelles distinctes continuent de fonctionner normalement. En outre, les applications Windows 16 bits exécutées dans des machines virtuelles distinctes ont des files d’attente d’entrée distinctes. Cela signifie que si une application cesse de répondre momentanément, les applications dans des machines virtuelles distinctes continuent de recevoir des entrées. L’inconvénient de l’exécution séparément est qu’il faut beaucoup plus de mémoire pour le faire. Vous devez utiliser cet indicateur uniquement si l’utilisateur demande que les applications 16 bits s’exécutent dans leur propre VDM.
CREATE_SHARED_WOW_VDM
0x00001000
L’indicateur est valide uniquement lors du démarrage d’une application Windows 16 bits. Si le commutateur DefaultSeparateVDM dans la section Windows de WIN.INI a la valeur TRUE, cet indicateur remplace le commutateur. Le nouveau processus est exécuté sur l’ordinateur DOS virtuel partagé.
CREATE_SUSPENDED
0x00000004
Le thread principal du nouveau processus est créé dans un état suspendu et ne s’exécute pas tant que la fonction ResumeThread n’est pas appelée.
CREATE_UNICODE_ENVIRONMENT
0x00000400
Si cet indicateur est défini, le bloc d’environnement pointé par lpEnvironment utilise des caractères Unicode. Sinon, le bloc d’environnement utilise des caractères ANSI.
DEBUG_ONLY_THIS_PROCESS
0x00000002
Le thread appelant démarre et débogue le nouveau processus. Il peut recevoir tous les événements de débogage associés à l’aide de la fonction WaitForDebugEvent .
DEBUG_PROCESS
0x00000001
Le thread appelant démarre et débogue le nouveau processus et tous les processus enfants créés par le nouveau processus. Il peut recevoir tous les événements de débogage associés à l’aide de la fonction WaitForDebugEvent .
Un processus qui utilise DEBUG_PROCESS devient la racine d’une chaîne de débogage. Cela se poursuit jusqu’à ce qu’un autre processus de la chaîne soit créé avec DEBUG_PROCESS.
Si cet indicateur est combiné avec DEBUG_ONLY_THIS_PROCESS, l’appelant débogue uniquement le nouveau processus, pas les processus enfants.
DETACHED_PROCESS
0x00000008
Pour les processus de console, le nouveau processus n’hérite pas de la console de son parent (valeur par défaut). Le nouveau processus peut appeler la fonction AllocConsole ultérieurement pour créer une console. Pour plus d’informations, consultez Création d’une console.
Cette valeur ne peut pas être utilisée avec CREATE_NEW_CONSOLE.
EXTENDED_STARTUPINFO_PRESENT
0x00080000
Le processus est créé avec des informations de démarrage étendues ; le paramètre lpStartupInfo spécifie une structure STARTUPINFOEX .
Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge.
INHERIT_PARENT_AFFINITY
0x00010000
Le processus hérite de l’affinité de son parent. Si le processus parent a des threads dans plusieurs groupes de processeurs, le nouveau processus hérite de l’affinité relative au groupe d’un groupe arbitraire utilisé par le parent.
Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge.

Notes

Sur Windows 32 bits, les applications 16 bits sont simulées par ntvdm.exe, et non pas en tant que processus individuels. Par conséquent, les indicateurs de création de processus s’appliquent à ntvdm.exe. Étant donné que ntvdm.exe persiste après l’exécution de la première application 16 bits, lorsque vous lancez une autre application 16 bits, les nouveaux indicateurs de création ne sont pas appliqués, sauf pour CREATE_NEW_CONSOLE et CREATE_SEPARATE_WOW_VDM, qui créent un ntvdm.exe.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2003 [applications de bureau uniquement]
En-tête
WinBase.h (inclure Windows.h)