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 |
---|---|
|
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 . |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Permet à l’appelant d’exécuter un processus enfant qui contourne les restrictions de processus qui seraient normalement appliquées automatiquement au processus. |
|
Cet indicateur permet aux processus sécurisés qui s’exécutent dans l’environnement de sécurité Virtualization-Based de lancer. |
|
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. |
|
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é. |
|
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. |
|
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. |
|
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 . |
|
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. |
|
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. |
|
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. |
|
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 |
|