Interruption 21h |
Fonction 44h, Sous-fonction 0Dh |
IOCTL: Contrôle d'Entrée/Sortie par bloc |
|---|---|---|
| DOS 3.2+, OS/2, Windows NT | ||
Description
Cette fonction de type IOCTL permet d'effectuer des contrôles d'Entrée/Sortie sur un périphérique de caractères orienté en bloc.
Entrée
| Registre | Valeur ou description | |
|---|---|---|
| AX | 440Dh | |
| BL | Ce registre permet d'indiquer l'unité de disque : | |
| Valeur | Description | |
| 0 | Cette valeur permet d'indiquer l'unité courante | |
| 1 | Cette valeur permet d'indiquer l'unité de disque A: | |
| 2 | Cette valeur permet d'indiquer l'unité de disque B: | |
| 3 | Cette valeur permet d'indiquer l'unité de disque C: | |
| 4 | Cette valeur permet d'indiquer l'unité de disque D: | |
| 5 | Cette valeur permet d'indiquer l'unité de disque E: | |
| 6 | Cette valeur permet d'indiquer l'unité de disque F: | |
| 7 | Cette valeur permet d'indiquer l'unité de disque G: | |
| 8 | Cette valeur permet d'indiquer l'unité de disque H: | |
| 9 | Cette valeur permet d'indiquer l'unité de disque I: | |
| 10 | Cette valeur permet d'indiquer l'unité de disque J: | |
| 11 | Cette valeur permet d'indiquer l'unité de disque K: | |
| 12 | Cette valeur permet d'indiquer l'unité de disque L: | |
| 13 | Cette valeur permet d'indiquer l'unité de disque M: | |
| 14 | Cette valeur permet d'indiquer l'unité de disque N: | |
| 15 | Cette valeur permet d'indiquer l'unité de disque O: | |
| 16 | Cette valeur permet d'indiquer l'unité de disque P: | |
| 17 | Cette valeur permet d'indiquer l'unité de disque Q: | |
| 18 | Cette valeur permet d'indiquer l'unité de disque R: | |
| 19 | Cette valeur permet d'indiquer l'unité de disque S: | |
| 20 | Cette valeur permet d'indiquer l'unité de disque T: | |
| 21 | Cette valeur permet d'indiquer l'unité de disque U: | |
| 22 | Cette valeur permet d'indiquer l'unité de disque V: | |
| 23 | Cette valeur permet d'indiquer l'unité de disque W: | |
| 24 | Cette valeur permet d'indiquer l'unité de disque X: | |
| 25 | Cette valeur permet d'indiquer l'unité de disque Y: | |
| 26 | Cette valeur permet d'indiquer l'unité de disque Z: | |
| CL | Code de fonction: | |
| Code de fonction | Description | |
| 40h | Cette fonction indique de fixer les paramètres d'un périphérique. | |
| 41h | Cette fonction permet d'effectuer l'écriture d'une piste. | |
| 42h | Cette fonction permet d'effectuer le formatage et la vérification d'une piste. | |
| 60h | Cette fonction indique de demander les paramètres d'un périphérique. | |
| 61h | Cette fonction permet d'effectuer la lecture d'une piste. | |
| 62h | Cette fonction permet d'effectuer la vérification d'une piste. | |
| DS:DX | Adresse du bloc de paramètres | |
Sortie
| Registre | Valeur ou description | |||
|---|---|---|---|---|
| FC | Ce registre de drapeau de retenue permet d'indiquer le résultat de l'opération : | |||
| Valeur | Description | |||
| 0 | Tout va bien, si a été appelé avec CL=60h ou 61h, DS:DX=Adresse du bloc de paramètres | |||
| 1 | Cette valeur permet d'indiquer qu'une erreur s'est produite, dans ce cas : | |||
| Registre | Description | |||
| AX | Ce registre permet d'indiquer le code d'erreur | |||
Remarques
- Voici pour les codes inférieur à 40h (fixer les paramètres d'un périphérique), et 60h (demande les paramètres d'un périphérique), le bloc de paramètres est formaté comme suit :
- Voici le champ BPB d'un périphérique structure ses données sur le disque courant et ses zones de contrôle. Ce champ est structuré de la façon suivante :
- Pour les codes inférieurs 41h (écriture de caractères) et 61h (lecture d'une piste), le bloc de paramètres a le format suivant :
- Pour le code inférieur 42h (formatage et vérification de piste) et 62h (vérification de piste), le bloc de paramètres est structuré comme suit :
| Déplacement | Longueur | Description | ||
|---|---|---|---|---|
| 00h | 1 octet | Ce champ contient des fonctions spécialisés: | ||
| Bits | Description | |||
| 0 | Ce bit indique s'il vaut 1 indique qu'il utilise le BPB courant, sinon (0) le champ de périphérique BPB contient un nouveau BPB par défaut | |||
| 1 | Ce bit indique s'il vaut 1 indique qu'il utilise tous les champs du bloc de paramètres, sinon (0) utilise seulement le champ de structure piste | |||
| 2 | Ce bit indique s'il vaut 1 indique qu'il utilise tous les secteurs de même taille sinon (0) utilise tous les secteurs de piste pouvant être de taille différente | |||
| 01h | 1 octet | Ce champs contient le type de périphérique: | ||
| Code | Description | |||
| 00h | Ce code indique une unité disque de 5"1/2, 320/360Ko | |||
| 01h | Ce code indique une unité disque de 5"1/2, 1,2 Mo | |||
| 02h | Ce code indique une unité disque de 3"1/2, 720 Ko | |||
| 03h | Ce code indique une unité disque de 8", simple densité | |||
| 04h | Ce code indique une unité disque de 8", double densité | |||
| 05h | Ce code indique une unité disque fixe | |||
| 06h | Ce code indique une unité disque à dérouleur de bande (TAPE) | |||
| 07h | Ce code indique un autre type d'unité disque | |||
| 02h à 03h | 2 octets | Ce champ contient l'attribut de périphérique: | ||
| Bits | Description | |||
| 0 | Ce bit indique s'il vaut 1 que le support de stockage n'est pas amovible | |||
| 1 | Ce bit indique s'il vaut 1 que le verrouillage de la porte est pris en charge | |||
| 04h à 05h | 2 octets | Ce champ contient le nombre de cylindres | ||
| 06h | 1 octet | Ce champ contient le type de support: | ||
| Code | Description | |||
| 0 | Ce code indique un disque 5"1/2; 1,2 Mo | |||
| 1 | Ce code indique un disque 5"1/2; 320/360 Ko | |||
| 07h à 25h | 31 octets | Ce champ indique le périphérique BPB | ||
| 26h à ??? | ? octets | Ces champs indique l'organisation des pistes: | ||
| Déplacement | Description | |||
| Mot | Ce champ indique le nombre de secteurs par piste | |||
| Mot | Ce champ indique le numéro du premier secteur dans la piste | |||
| Mot | Ce champ indique la taille du premier secteur dans la piste | |||
| : | ||||
| Mot | Ce champ indique le numéro du dernier secteur de la piste | |||
| Mot | Ce champ indique la taille du dernier secteur de la piste | |||
| Déplacement | Longueur | Description |
|---|---|---|
| 00h à 01h | 2 octets (1 mot) | Ce champ contient le nombre d'octet par secteur. |
| 02h | 1 octet | Ce champ contient le nombre de secteur par unité d'allocation. |
| 03h à 04h | 2 octets (1 mot) | Ce champ contient le nombre de secteur réservé au début de l'unité de disque. |
| 05h | 1 octet | Ce champ contient le nombre de tables d'allocation de fichiers (FAT). |
| 06h à 07h | 2 octets (1 mot) | Ce champ contient le nombre de maximum d'entrées dans le répertoire racine. |
| 08h à 09h | 2 octets (1 mot) | Ce champ contient le nombre de secteurs. |
| 0Ah | 1 octet | Ce champ contient le descripteur du support. |
| 0Bh à 0Ch | 2 octets (mot) | Ce champ contient le nombre de secteurs par FAT. |
| 0Dh à 0Eh | 2 octets (mot) | Ce champ contient le nombre de secteurs par piste. |
| 0Fh à 10h | 2 octets (mot) | Ce champ contient le nombre de têtes. |
| 11h à 14h | 4 octets (double mot) | Ce champ contient le nombre de secteurs cachés. |
| 15h à 1Fh | 11 octets | Ce champ est réservé pour un usage interne ou futur. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 1 octet | Ce champ contient une fonction spécial (doit être égal à 0). |
| 01h à 02h | 2 octets (mot) | Ce champ contient la tête. |
| 03h à 04h | 2 octets (mot) | Ce champ contient le cylindre. |
| 05h à 06h | 2 octets (mot) | Ce champ contient le secteur de début. |
| 07h à 08h | 2 octets (mot) | Ce champ contient le secteur à transférer. |
| 09h à 0Ch | 2 octets (mot) | Ce champ contient l'adresse du tampon de transfert. |
| Déplacement | Longueur | Description |
|---|---|---|
| 00h | 1 octet | Ce champs contient une fonction spécial (doit être égal à 0). |
| 01h à 02 | 1 octet | Ce champs contient la tête. |
Références
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 237 à 241.
Dernière mise à jour : Jeudi, le 3 mars 2016
