Section courante

A propos

Section administrative du site

Interruption 21h

Fonction 64h

OS/2 API DOS32StartSession
OS/2 Version 2.1+

Description

Cette fonction permet de lancer une nouvelle session sous OS/2 indépendante ou non de la session de boite de compatibilité DOS (Virtual DOS Machine) actuel.

Entrée

Registre Valeur ou description
AH 64h
BX 0025h (API ordinaire)
CX 636Ch ("cl")
DS:SI Cette paire de registres permet d'indiquer la Structure de la «StartData» de la boite de comptabilité DOS d'OS/2 :
Déplacement Taille Description
00h Mot (Word) Longueur de la structure (peut être 0018h, 001Eh, 0020h, 0032h ou 003Ch)
02h Mot (Word) Relation du nouveau processus à appeler :
Code Description
00h Totalement indépendante de la session actuel
01h Enfant de la session actuel
04h Mot (Word) La priorité de la session :
Code Description
00h Passe au premier plan
01h Exécuter en arrière-plan
06h Mot (Word) Les options de trace (00h à 02h, 00h = Aucun traçage)
08h Double mots Pointeur sur le titre en format ASCIZ du programme (maximum de 62 caractères) ou sur l'adresse nulle (0000h:0000h)
0Ch Double mots Pointeur sur le nom en format ASCIZ du programme (maximum de 128 caractères) ou sur l'adresse nulle (0000h:0000h)
10h Double mots Pointeur sur les arguments en format ASCIZ du programme (maximum de 144 caractères ou sur l'adresse nulle (0000h:0000h).
14h Double mots "TermQ" (Normalement réservée, peut être 00000000h)
18h Double mots Pointeur sur les variables d'environnement (maximum de 486 octets) ou sur l'adresse nulle (0000h:0000h) si vous utiliser pas de nouvel environnement spécifique.
1Ch Mot (Word) Héritier de cette session-ci (00h ou 01h)
1Eh Mot (Word) Type de session demandée :
Code Description
00h Gestionnaire de session OS/2 va déterminer le type de session devant être lancée (par défaut)
01h OS/2 pleine écran
02h OS/2 en fenêtre
03h Gestionnaire de présentation d'OS/2 (PM)
04h VDM pleine écran
07h VDM en fenêtre
20h Double mots Pointeur sur le nom de l'icône à utilisée en format ASCIZ pour cette session (maximum de 128 caractères) ou l'adresse nulle (0000h:0000h) s'il n'y en pas de spécifique.
24h Double mots Le "Handle" du programme (normalement réservée, peut être 00000000h)
28h Mot (Word) Le contrôle de programme
2Ah Mot (Word) Nombre de colonne initialement
2Ch Mot (Word) Nombre de ligne initialement
2Eh Mot (Word) Largeur initialement
30h Mot (Word) Hauteur initialement
32h Mot (Word) Réservée (valeur nulle (0))
34h Double mots Tampon de l'objet (normalement réservée, peut être 00000000h)
38h Double mots Longueur du tampon de l'objet (normalement réservée, peut être 00000000h)

Sortie

Registre Valeur ou description
AX Code de retour

Exemple

L'exemple suivant, écrit en Turbo Pascal 7 pour DOS, permet d'exécuter l'interpréteur de commande OS/2 à partir d'une session de DOS :

  1. Program ExecOS2;
  2.  
  3. Const
  4.  
  5.   { Relation du processus }
  6.  prNew=$0001;                { Indépendant }
  7.  prChild=$0002;              { Enfant }
  8.  
  9.   { Priorité de la session }
  10.  prForeground=$0000;         { Premier plan }
  11.  prBackground=$0001;         { Arrière plan }
  12.  
  13.   { Modèle de session }
  14.  stDefault=$0000;            { Par défaut }
  15.  stOS2FullScrn=$0001;        { OS/2 Plein écran }
  16.  stOS2Window=$0002;          { OS/2 en fenêtre }
  17.  stPM=$0003;                 { Gestionnaire de présentation d'OS/2 }
  18.  stDosFullScrn=$0004;        { DOS pleine écran }
  19.  stDosWindow=$0007;          { DOS en fenêtre }
  20.  
  21. Type
  22.  OS2StartData=Record
  23.   LenStruct:Word;                   { Longueur de la structure (peut être }
  24.             { 0018h, 001Eh, 0020h, 0032h, 003Ch) }
  25.   Process:Word;                     { Relation du nouveau processus (pr??): }
  26.                                     { 0000h = Indépendant, 0001h = Enfant}
  27.   Priority:Word;                    { Priorité de la session: }
  28.                                     { 0000h = Premier plan }
  29.                                     { 0001h = Arrière plan }
  30.   Trace:Word;                       { Les options de traces }
  31.   Title:PChar;                      { Titre du programme }
  32.   Name:PChar;                       { Nom du programme }
  33.   Args:PChar;                       { Argument du programme }
  34.   TermQ:PChar;                      { "TermQ"}
  35.   Environment:PChar;                { Variable d'environnement }
  36.   Inherit:WordBool;                 { Héritier des données }
  37.   SessionType:Word;                 { Modèle de session }
  38.   Icon:PChar;                       { Nom de l'icône }
  39.   PgmHandle:PChar;                  { Le "Handle" du programme }
  40.   PgmControl:Word;                  { Le contrôle du programme }
  41.   Column:Word;                      { Colonne }
  42.   Row:Word;                         { Ligne }
  43.   Width:Word;                       { Largeur }
  44.   Height:Word;                      { Hauteur }
  45.   Reserved:Word;                    { Réservée }
  46.   ObjectBuffer:LongInt;             { Pointeur sur le tampon d'objet }
  47.   ObjectBufferLen:Word;             { Longueur du tampon d'objet }
  48.  End;
  49.  
  50. Function OS2Exec(Const Data:OS2StartData):Word;Assembler;ASM
  51.  PUSH DS
  52.   LDS SI,Data
  53.   MOV AH,064h
  54.   MOV BX,0025h
  55.   MOV CX,636Ch
  56.   INT 21h
  57.  POP DS
  58. END;
  59.  
  60. Var
  61.  Data:OS2StartData;
  62.  Error:Word;
  63.  
  64. BEGIN
  65.  FillChar(Data,SizeOf(Data),0);
  66.  Data.LenStruct:=$32;
  67.  Data.Process:=prNew;
  68.  Data.Priority:=prForeground;
  69.  Data.Title:='Programme fils';
  70.  Data.Name:='C:\OS2\cmd.exe';
  71.  Data.Args:='';
  72.  Error:=OS2Exec(Data);
  73. END.

Voir également

Langage de programmation - C pour OS/2 - DosStartSession


Dernière mise à jour : Jeudi, le 3 mars 2016