Interruption 2Fh |
Fonction 16h, Sous-Fonction 0Ah |
Détection de Windows 3.0 ou Windows 3.1 |
---|
Description
Grâce à cette fonction, il est possible de connaître la présence de Windows, sa version (si supérieur ou égal à 3.0) ainsi que son mode actuel de fonctionnement.
Entrée
Registre | Description |
---|---|
AX | 160Ah |
Sortie
Registre | Description | ||
---|---|---|---|
AX | 0000h si fonction supporté | ||
BX | Version (BH=Version, BL=Révision). Si vous fonctionner sous Windows 95 ou 98, la version contenu dans BH vaudra 4 et la révision sera 0 pour 95 et 10 pour 98. Voici d'ailleurs un bref tableau reflétant cette réalité : | ||
BH (Version) | BL (Révision) | Description | |
03h | 00h | Windows 3.0 | |
03h | 01h | Windows 3.1 | |
04h | 00h | Windows 95 | |
04h | 0Ah (10) | Windows 98 | |
05h | Windows 2000 Professionnel, Windows 2000 Server, Windows Server 2003 | ||
CX | Mode de fonctionnement: | ||
Mode | Description | ||
0001h | Cette valeur permet d'indiquer le mode réel (uniquement disponible sous Windows 3.0) | ||
0002h | Cette valeur permet d'indiquer le mode standard | ||
0003h | Cette valeur permet d'indiquer le mode étendu pour le 80386 |
Remarques
- Windows Millenium ne semble pas détectable avec cette routine et on devra plutôt vérifier la présence d'un DOS version 8.0 (voir Interruption 21h, Fonction 30h).
Interruption 2Fh |
Fonction 16h, Sous-Fonction 84h |
Demande le point d'entrée d'un API de périphérique |
---|---|---|
Windows, OS/2 |
Description
Cette sous-fonction demande le point d'entrée d'un périphérique virtuel, d'application (API) de Windows.
Entrée
Registre | Description | |||||
---|---|---|---|---|---|---|
AX | 1684h | |||||
BX | Identificateur du périphérique virtuel (VxD ID) (MP=Mode Protégé; V86=Mode Virtuel 86): | |||||
Valeur | Nom | Call Out | V86 | MP | Description | |
01h | VMM | Oui | Oui | Gestionnaire de machine virtuel (Virtual Machine Manager) | ||
02h | Debug | Non | Non | Déboguage | ||
03h | VPICD | Oui | Oui | Périphérique virtuel du contrôleur d'interruption programmable (PIC). | ||
04h | VDMAD | Non | Non | Périphérique virtuel du DMA (Direct Memory Access). | ||
05h | VTD | Oui | Oui | Périphérique virtuel de l'horloge/minuterie (Virtuel Timer Device). | ||
06h | V86MMGR | Non | Non | Périphérique virtuel du mode 8086/8088. | ||
07h | PAGESWAP | Non | Non | Périphérique de pagination de la mémoire. | ||
08h | Parity | Non | Non | Trappe de vérification de la parité. | ||
09h | Reboot | Non | Oui | Gestionnaire de la combinaison clavier Ctrl+Alt+Delete. | ||
0Ah | VDD | Non | Oui | Périphérique virtuel d'affichage vidéo primaire (Virtual Display Device (Grabber)). | ||
0Bh | VSD | Non | Non | Périphérique virtuel de gestion du son (Virtual Sound Device). | ||
0Ch | VMD | Oui | Oui | Oui | Périphérique virtuel pour la souris (Virtual Mouse Device). | |
0Dh | VKD | Non | Oui | Périphérique virtuel du clavier (Virtual Keyboard Device). | ||
0Eh | VCD | Non | Oui | Périphérique virtuel de communication (Virtual COMM Device). | ||
0Fh | VPD | Périphérique virtuel d'imprimante (Virtual Printer Device). | ||||
10h | VHD | Périphérique virtuel du disque dur pour Windows 3.0 (Virtual Hard Disk Device). | ||||
BLOCKDEV | Non | Non | Périphérique virtuel du disque dur pour Windows 3.1 (Virtual Hard Disk Device). | |||
11h | VMCPD | Périphérique virtuel du coprocesseur mathématique (Virtual Math Coprocessor Device). | ||||
12h | EBIOS | Non | Non | Réservé pour la page EBIOS (ingénierie du PS/2) | ||
13h | BIOSXLAT | Carte d'application de la ROM du BIOS pour le mode protégé et le mode virtuel 8086. | ||||
14h | VNETBIOS | Oui | Non | Non | Périphérique virtuel du BIOS réseau (Virtual NetBios Device). | |
15h | DOSMGR | Oui | Non | Gestionnaire DOS. | ||
16h | WINLOAD | Chargement de Windows. | ||||
17h | SHELL | Non | Oui | Interpréteur de commande. | ||
18h | VMPoll | Non | Non | Mode Virtuel "Poll"? | ||
19h | VPROD | ? | ||||
1Ah | DOSNET | Non | Non | Assures au réseau l'intégrité avec les modes virtuel. | ||
1Bh | VFD | Non | Non | Périphérique virtuel d'unité amovible/lecteur de disquette (Virtual Floppy Device). | ||
1Ch | VDD2 | Non | Non | Périphérique virtuel d'adaptateur vidéo secondaire (Secondary display adapter). | ||
1Dh | WINDEBUG | Non | Oui | Déboguage Windows | ||
1Eh | TSRLoad | Utilitaire d'assistance au TSR | ||||
1Fh | BiosHook | Interruption BIOS accrochant les périphériques virtuel (VxD) | ||||
20h | Int13h | Non | Non | Non | Interruption 13h | |
21h | PageFile | Non | Oui | Périphérique de pagination fichier | ||
22h | SCSI | Périphérique gérant le bus d'entrée/sortie SCSI. | ||||
23h | MCA_POS | Pour l'architecture MCA | ||||
24h | SCSIFD | Périphérique d'accès rapide au disque par SCSI. | ||||
25h | VPEND | Périphérique virtuel de crayon (Virtual Pen Device) | ||||
26h | APM | Gestionnaire d'alimentation avancée (Advanced Power Management). | ||||
444h | VADMAD | Automatisation DMA (Windows 3.0) | ||||
1025h | MMD | Gestionnaire de mémoire ou machine? (Memory Manager/Machine Manager?) | ||||
2860h | COMMTASK | Non | Non | Oui | Gestionnaire de tâche de Windows en mode 386 | |
28C0h | VxD | Non | Oui | Oui | Générique de device virtuel pour le mode réel/protégé | |
3098h | VstlthD | Non | Non | Non | Pour le mode ROM du QEMM de Stealth | |
Le bit du haut (15) de l'identificateur du périphérique virtuel est réservé pour un usage futur. Les 10 bits (14 à 5) suivant sont les numéro d'OEM lequel est désigne par Microsoft. Les 5 bits (4 à 0) du bas sont le numéro de périphérique. Naturellement, ce schéma n'est plus utilisé depuis ce temps là car il y a maintenant beaucoup plus que 32 périphérique virtuel (VxD) différentes. | ||||||
ES:DI | 0000h:0000h |
Sortie
Registre | Description | |
---|---|---|
ES:DI | Code de retour: | |
Valeur | Description | |
0000h:0000h | Cette valeur permet d'indiquer que la fonction n'est pas supporté | |
... | Ces valeurs permettent d'indiquer que le point d'entrée du périphérique virtuel d'application |
Remarques
-
Quelques Windows en mode étendu fournissent des services que les applications peuvent accéder. Par exemple, le périphérique
d'affichage virtuel (Virtuel Display Device (VDD)) fournit un API utilisable passant par le «WINOLDAP».
VTD.386: On peut appeler avec un «CALL FAR» cet périphérique virtuel en utilisant certain paramètre dans des registres tout comme une interruption:
VTD.386
Fonction 00h
Demande la version Description
Cette fonction demande à le périphérique VTD (Virtual Timer Device) quel est sa version.
Entrée
Registre Description AX 0000h Sortie
Registre Description AH Version (exemple: le 3 de 3.10) AL Sous-Version (exemple: le 10 de 3.10) Remarque
- Vous ne devriez appeler directement cette fonction que lorsque la fonction «TimerCount» de la bibliothèque «TOOLHELP.DLL» ne peut pas être appelé.
VTD.386
Fonction 01h
Demande le tic courant d'horloge Description
Cette fonction demande à le périphérique virtuel le nombre de tic d'horloge s'étant produit sur l'horloge gardant l'heure courant 840 nanosecondes après le lancement de Windows.
Entrée
Registre Description AX 0100h Sortie
Registre Description EDX:EAX Nombre d'unité de temps après le lancement de Windows Remarque
- Vous ne devriez appeler directement cette fonction que lorsque la fonction «TimerCount» de la bibliothèque «TOOLHELP.DLL» ne peut pas être appelé.
VTD.386
Fonction 01h, Sous-Fonction 01h
Heure système en milliseconde Description
Cette fonction demande l'heure courante du système en millisecondes après que Windows ait été lancés.
Entrée
Registre Description AX 0101h Sortie
Registre Description EAX Temps depuis lequel Windows fonctionne Remarque
- Vous ne devriez appeler directement cette fonction que lorsque la fonction «TimerCount» de la bibliothèque «TOOLHELP.DLL» ne peut pas être appelé.
VTD.386
Fonction 02h
Demande l'heure machine virtuelle Description
Cette fonction demande l'heure courant machine virtuel quand une accumulation de temps machine virtuelle est monté.
Entrée
Registre Description AX 0102h Sortie
Registre Description EAX Accumulation de temps machine virtuel en millisecondes si l'accumulation est monté. Remarque
- Vous ne devriez appeler directement cette fonction que lorsque fonction «TimerCount» de la bibliothèque «TOOLHELP.DLL» ne peut pas être appelé.
Interruption 2Fh |
Fonction 16h, Sous-Fonction 86h |
Détection du mode DPMI |
---|---|---|
DPMI |
Description
Cette sous-fonction permet de connaître le mode de DPMI (DOS Protected Mode Interface) sous lequel l'ordinateur fonctionne.
Entrée
Registre | Description |
---|---|
AX | 1686h |
Sortie
Registre | Description | |
---|---|---|
AX | Code de retour: | |
Valeur | Description | |
=0000h | S'il est en mode protégé sous le DPMI (INT 31h disponible) | |
<>0000h | S'il est en mode réel virtuel 86 ou pas de DPMI (INT 31h non disponible) |
Remarques
- Certains environnements prennent en charge des programmes ou des bibliothèques pouvant s'exécuter en mode réel ou mode protégé (code bimodal). Cette fonction est fournie afin que ces programmes puissent détecter au moment de l'exécution s'ils s'exécutent en mode protégé et utiliser les fonctionnalités du système en conséquence.
- Cette fonction ne doit pas être utilisée pour déterminer si un hôte DPMI est présent. Un client doit s'assurer que les services DPMI sont disponibles avant d'appeler cette fonction; sinon, les résultats renvoyés par la fonction peuvent ne pas être valides.
Interruption 2Fh |
Fonction 16h, Sous-Fonction 87h |
Détecte l'installation du DPMI |
---|---|---|
DPMI |
Description
Cette sous-fonction permet de détecter si un gestionnaire DPMI (DOS Protected-Mode Interface) est présent.
Entrée
Registre | Description |
---|---|
AX | 1687h |
Sortie
Registre | Description | |
---|---|---|
AX | Code de retour: | |
Valeur | Description | |
0000h | Cette valeur permet d'indiquer qu'il est installé | |
... | Ces valeurs permet d'indiquer qu'il n'est pas installé | |
BX | Drapeaux: | |
Bits | Description | |
0 | Cette valeur permet d'indiquer un programme supportant le 32-bits | |
1 à 15 | Ces valeurs sont réservés pour un usage futur | |
CL | Type de processeur: | |
Code | Description | |
02h | 80286 | |
03h | 80386 | |
04h | 80486 | |
DH | Version majeur du DPMI | |
DL | Version mineur en 2-décimal (Binaire/BCD) | |
SI | Nombre de paragraphes de donnée privée du DOS extender | |
ES:DI | Point d'entrée des drapeaux du mode DPMI |
Remarques
- Le point d'entrée renvoyé par l'interruption 2Fh, fonction 1687h n'est appelé que pour le premier commutateur en mode protégé par un client DPMI.
- Sous les hôtes DPMI, le numéro de version principal est renvoyé en DH et le numéro de version mineur est renvoyé en DL. Il existe deux chiffres décimaux pour le numéro de version secondaire, le chiffre le moins significatif représentant le numéro de révision du numéro de version secondaire. Sous les hôtes DPMI version 0.9, le registre DH est renvoyé comme 0 et DL est renvoyé comme décimal 90 (5AH). Dans l'hypothèse d'un DPMI version 2.3, le registre DH serait retourné comme 2 et le registre DL serait retourné comme 30 (1Eh).
- Appelez le point d'entrée avec les paramètres :
- Il retournera en fonction du processus les éléments suivant :
- CF=1: Erreur, programme roule en mode réel:
- AX=Code d'erreur (DPMI 1.0+) :
- Le point d'entrée est seulement appelé pour initialisé les paramètres au mode protégé.
Registre | Description | |
---|---|---|
AX | Drapeaux: | |
Code | Description | |
0 | Programmes en 32-bits supporté | |
1 à 15 | Réservé | |
ES | Segment en mode réel du tampon pour des données privées du DPMI (ignorée si SI=0) |
Code d'erreur | Description |
---|---|
8011h | Impossible d'allouer les descripteurs nécessaires |
8021h | Lors de l'appelle, une demande en 32-bits a été faite, toutefois, présentement il fonctionne en DPMI 16-bits. |
0: Tout va bien, le programme est maintenant en mode protégé:
CS=Sélecteur 16-bits correspondant au CS du mode réel
SS=Sélecteur 16-bits correspondant au SS du mode réel (limite de 64 Ko maximum)
DS=Sélecteur 16-bits correspondant au DS du mode réel (limite de 64 Ko maximum)
ES=Sélecteur du PSP du programme (100h octets maximum)
FS=GS=0
Haut du mot de ESP=0 si le programme fonctionne en 32-bits
Interruption 2Fh |
Fonction 16h, Sous-Fonction 8Eh, Option 0000h |
Fixe le nom de l'application |
---|---|---|
Windows 95, 98 |
Description
Cette option permet de définir un nom à l'application d'une longueur maximal de 79 caractères et devant obligatoirement être terminée par un code ASCII 0 ne faisant pas partie du 79 caractères juste-spécifié.
Entrée
Registre | Description |
---|---|
AX | 168Eh |
DX | 0000h |
ES:DI | Adresse du tampon ASCIZ devant contenir le nouveau nom d'application. |
Sortie
Registre | Description | |
---|---|---|
AX | Code de retour: | |
Valeur | Description | |
0000h | Cette valeur permet d'indiquer l'erreur de fonction non-supporté | |
0001h | Cette valeur permet d'indiquer que l'opération est réussit |
Remarques
- Si l'adresse pointée par ES:DI est 0000h:0000h ou qu'elle pointe sur une chaîne de caractères vide, le nom courant est automatiquement détruit. BUG: Cette option retourne une opération réussite malgré le fait que le nom n'est pas changé. Afin de résoudre ce problème, il faut attendre deux tics d'horloge après que le programme est démarrer pour obtenir la véritable réponse.
Interruption 2Fh |
Fonction 16h, Sous-Fonction 8Eh, Option 0001h |
Demande le nom de l'application |
---|---|---|
Windows 95, 98 |
Description
Cette option permet de définir un nouveau nom de machine virtuel d'une longueur maximal de 29 caractères et devant obligatoirement être terminée par un code ASCII 0 ne faisant pas partie du 29 caractères juste nommé.
Entrée
Registre | Description |
---|---|
AX | 168Eh |
DX | 0001h |
ES:DI | Adresse du tampon ASCIZ devant contenir le nom de la machine virtuel. |
Sortie
Registre | Description | |
---|---|---|
AX | Code de retour: | |
Valeur | Description | |
0000h | Cette valeur permet d'indiquer l'erreur de fonction non-supporté | |
0001h | Cette valeur permet d'indiquer que l'opération est réussit |
Remarques
- Si l'adresse pointée par ES:DI est 0000h:0000h ou qu'elle pointe sur une chaîne de caractères vide, le nom courant est automatiquement détruit. Le nom virtuel de la machine est seulement modifier sous demande explicite de l'utilisateur. BUG: Cette option retourne une opération réussite malgré le fait que le nom n'est pas changé. Afin de résoudre ce problème, il faut attendre deux tics d'horloge après que le programme est démarrer pour obtenir la véritable réponse.
Interruption 2Fh |
Fonction 16h, Sous-Fonction 8Eh, Option 0002h |
Demande le nom de l'application |
---|---|---|
Windows 95, 98 |
Description
Cette option permet de connaître le nom de l'application en le copiant si possible dans le tampon spécifier après l'avoir terminé par un code ASCII 0 comme une chaîne de caractères de format ASCIZ.
Entrée
Registre | Description |
---|---|
AX | 168Eh |
DX | 0002h |
ES:DI | Adresse du tampon ASCIZ devant contenir le nom de l'application. |
CX | Longueur en octet du tampon |
Sortie
Registre | Description | |
---|---|---|
AX | Code de retour: | |
Valeur | Description | |
0000h | Cette valeur permet d'indiquer l'erreur de fonction non-supporté | |
0001h | Cette valeur permet d'indiquer que l'opération est réussit |
Interruption 2Fh |
Fonction 16h, Sous-Fonction 8Eh, Option 0003h |
Demande le nom virtuel de la machine |
---|---|---|
Windows 95, 98 |
Description
Cette option permet de copier le nom de la machine virtuel si possible dans le tampon spécifier après l'avoir terminé par un code ASCII 0 comme une chaîne de caractères de format ASCIZ.
Entrée
Registre | Description |
---|---|
AX | 168Eh |
DX | 0003h |
ES:DI | Adresse du tampon ASCIZ devant contenir le nom virtuel de la machine |
CX | Longueur en octet du tampon |
Sortie
Registre | Description | |
---|---|---|
AX | Code de retour: | |
Valeur | Description | |
0000h | Cette valeur permet d'indiquer l'erreur de fonction non-supporté | |
0001h | Cette valeur permet d'indiquer que l'opération est réussit |