DosExecPgm |
DOS : Exécute un programme |
---|---|
DOSCALLS.DLL | os2.h |
Syntaxe
APIRET DosExecPgm( PCHAR pchProcName, LONG lProcName, ULONG ulExecFlag, PSZ pszArg, PSZ pszEnv, PSZ pszRes, PSZ pszName ); |
Paramètres
Nom | Description | ||
---|---|---|---|
pchProcName | Ce paramètre permet d'indiquer l'adresse du tampon contenant le nom d'un processus étant responsable si un échec avec DosExecPgm se produit. | ||
lProcName | Ce paramètre permet d'indiquer la longueur, en octets, d'un tampon pchProcName. | ||
ulExecFlag | Ce paramètre permet d'indiquer les drapeaux guidant le processus enfant : | ||
Constante | Valeur | Description | |
EXEC_SYNC | 0 | Cette valeur permet d'indiquer que le processus est synchronisé avec le processus parent. | |
EXEC_ASYNC | 1 | Cette valeur permet d'indiquer que le processus est désynchronisé d'avec le processus parent. | |
EXEC_ASYNCRESULT | 2 | Cette valeur permet d'indiquer que le processus est désynchronisé d'avec le processus parent et attend le résultat de l'enfant. | |
EXEC_TRACE | 3 | Cette valeur permet d'indiquer que le processus est désynchronisé d'avec le processus parent et attend le résultat de l'enfant et suivi à la trace par un débogueur. Seul le processus enfant est concerné par la session de déboguage. | |
EXEC_BACKGROUND | 4 | Cette valeur permet d'indiquer que le processus est désynchronisé d'avec le processus parent et est exécuté en arrière-plan. | |
EXEC_LOAD | 5 | Cette valeur permet d'indiquer que le processus est chargé en mémoire et prêt à être exécuté, mais qu'il n'est pas exécuté tant que le gestionnaire de session n'a pas reçu un processus léger appartenant à ce processus. | |
EXEC_ASYNCRESULTDB | 6 | Cette valeur permet d'indiquer que le processus est désynchronisé d'avec le processus parent et attend le résultat de l'enfant et suivi à la trace par un débogueur. Le processus enfant et ses descendants sont concernés par la session de déboguage. | |
pszArg | Ce paramètre permet d'indiquer l'adresse d'une chaîne de caractères d'argument passé au processus. | ||
pszEnv | Ce paramètre permet d'indiquer l'adresse d'une chaîne de caractères d'environnement passé au processus. | ||
pszRes | Ce paramètre permet d'indiquer un pointeur de structure RESULTCODES. | ||
pszName | Ce paramètre permet d'indiquer l'adresse d'une chaîne de caractères contenant le nom du fichier du processus enfant avec son extension lequel doit être présent. |
Retour
Valeur | Constante | Description |
---|---|---|
0 | NO_ERROR | Cette valeur permet d'indiquer que l'opération s'est correctement effectué |
1 | ERROR_INVALID_FUNCTION | Cette valeur permet d'indiquer qu'une erreur de fonction invalide s'est produite. |
2 | ERROR_FILE_NOT_FOUND | Cette valeur permet d'indiquer qu'une erreur de fichier introuvable s'est produite. |
3 | ERROR_PATH_NOT_FOUND | Cette valeur permet d'indiquer qu'une erreur de chemin introuvable s'est produite. |
4 | ERROR_TOO_MANY_OPEN_FILES | Cette valeur permet d'indiquer qu'une erreur de trop de fichier ouvert simultanément s'est produite. |
5 | ERROR_ACCESS_DENIED | Cette valeur permet d'indiquer qu'une erreur d'accès refusé s'est produite. |
8 | ERROR_NOT_ENOUGH_MEMORY | Cette valeur permet d'indiquer que la limite de mémoire système est atteinte. |
10 | ERROR_BAD_ENVIRONMENT | Cette valeur permet d'indiquer qu'une erreur se mauvaise environnement s'est produite. |
11 | ERROR_BAD_FORMAT | Cette valeur permet d'indiquer qu'une erreur de mauvais format s'est produite. |
13 | ERROR_INVALID_DATA | Cette valeur permet d'indiquer qu'une erreur de données invalides s'est produite. |
26 | ERROR_NOT_DOS_DISK | Cette valeur permet d'indiquer qu'une erreur de disque non-DOS s'est produite. |
32 | ERROR_SHARING_VIOLATION | Cette valeur permet d'indiquer qu'une erreur de violation de partage s'est produite. |
33 | ERROR_LOCK_VIOLATION | Cette valeur permet d'indiquer qu'une erreur de violation de verrou s'est produite. |
36 | ERROR_SHARING_BUFFER_EXCEEDED | Cette valeur permet d'indiquer qu'une erreur de dépassement de limite de tampon partagé s'est produite. |
89 | ERROR_NO_PROC_SLOTS | Cette valeur permet d'indiquer qu'une procédure n'est pas dans l'entrée lui étant attribué. |
95 | ERROR_INTERRUPT | Cette valeur permet d'indiquer qu'une erreur d'interruption s'est produite. |
108 | ERROR_DRIVE_LOCKED | Cette valeur permet d'indiquer qu'une erreur d'unité verrouillé s'est produite. |
127 | ERROR_PROC_NOT_FOUND | Cette valeur permet d'indiquer qu'une procédure est introuvable. |
182 | ERROR_INVALID_ORDINAL | Cette valeur permet d'indiquer un ordinal invalide. |
190 | ERROR_INVALID_MODULETYPE | Cette valeur permet d'indiquer un type de module invalide. |
191 | ERROR_INVALID_EXE_SIGNATURE | Cette valeur permet d'indiquer une signature d'exécutable invalide. |
192 | ERROR_EXE_MARKED_INVALID | Cette valeur permet d'indiquer une erreur de marque d'exécutable invalide s'est produite. |
195 | ERROR_INVALID_MINALLOCSIZE | Cette valeur permet d'indiquer une erreur de taille d'allocation minimum invalide. |
196 | ERROR_DYNLINK_FROM_INVALID_RING | Cette valeur permet d'indiquer une erreur de lien dynamique invalide dans l'anneau. |
Description
Cette fonction permet de créer un processus enfant lequel peut être synchronisé, désynchronisé ou détaché.
Exemple
Voici un simple exemple montrant comme appeler cette API avec WatCom C++ for OS/2 :
- #define INCL_DOSERRORS
- #define INCL_DOSPROCESS
- #include "os2.h"
- #include "stdio.h"
-
- void main(void) {
- UCHAR pszArgString[CCHMAXPATH+41];
- RESULTCODES ChildRC = {0};
- switch(DosExecPgm("C:\\OS2\\cmd.exe", sizeof("C:\\OS2\\cmd.exe"), EXEC_SYNC, pszArgString, NULL, &ChildRC, "cmd.exe")) {
- case NO_ERROR: printf("Tout va bien !");break;
- case ERROR_INVALID_FUNCTION: printf("Erreur : Une erreur de fonction invalide s'est produite.");break;
- case ERROR_FILE_NOT_FOUND: printf("Erreur : Une erreur de fichier introuvable s'est produite.");break;
- case ERROR_PATH_NOT_FOUND: printf("Erreur : Une erreur de chemin introuvable s'est produite.");break;
- case ERROR_TOO_MANY_OPEN_FILES: printf("Erreur : Une erreur de trop de fichier ouvert simultanément s'est produite.");break;
- case ERROR_ACCESS_DENIED: printf("Erreur : Une erreur d'accès refusé s'est produite.");break;
- case ERROR_NOT_ENOUGH_MEMORY: printf("Erreur : La limite de mémoire système est atteinte.");break;
- case ERROR_BAD_ENVIRONMENT: printf("Erreur : Une erreur se mauvaise environnement s'est produite.");break;
- case ERROR_BAD_FORMAT: printf("Erreur : Une erreur de mauvais format s'est produite.");break;
- case ERROR_INVALID_DATA: printf("Erreur : Une erreur de données invalides s'est produite.");break;
- case ERROR_NOT_DOS_DISK: printf("Erreur : Une erreur de disque non-DOS s'est produite.");break;
- case ERROR_SHARING_VIOLATION: printf("Erreur : Une erreur de violation de partage s'est produite.");break;
- case ERROR_LOCK_VIOLATION: printf("Erreur : Une erreur de violation de verroue s'est produite.");break;
- case ERROR_SHARING_BUFFER_EXCEEDED: printf("Erreur : Une erreur de dépassement de limite de tampon partagé s'est produite.");break;
- case ERROR_NO_PROC_SLOTS: printf("Erreur : Une procédure n'est pas dans l'entrée lui étant attribué.");break;
- case ERROR_INTERRUPT: printf("Erreur : Une erreur d'interruption s'est produite.");break;
- case ERROR_DRIVE_LOCKED: printf("Erreur : Une erreur d'unité verrouillé s'est produite.");break;
- case ERROR_PROC_NOT_FOUND: printf("Erreur : Une procédure est introuvable.");break;
- case ERROR_INVALID_ORDINAL: printf("Erreur : Un ordinal invalide.");break;
- case ERROR_INVALID_MODULETYPE: printf("Erreur : Un type de module invalide.");break;
- case ERROR_INVALID_EXE_SIGNATURE: printf("Erreur : Une signature d'exécutable invalide.");break;
- case ERROR_EXE_MARKED_INVALID: printf("Erreur : Une erreur de marque d'exécutable invalide s'est produite.");break;
- case ERROR_INVALID_MINALLOCSIZE: printf("Erreur : Une erreur de taille d'allocation minimum invalide.");break;
- case ERROR_DYNLINK_FROM_INVALID_RING: printf("Erreur : Une erreur de lien dynamique invalide dans l'anneau.");break;
- }
- }
Voir également
Langage de programmation - C pour OS/2 - DosExit
Langage de programmation - C pour OS/2 - DosKillProcess
Langage de programmation - Assembleur 80x86 - Interruption 21h, Fonction 64h: OS/2 API DOS32StartSession
Système d'exploitation - OS/2 - Introduction
Dernière mise à jour : Lundi, le 19 juillet 2010