|
|
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
AX=440Dh
BL=Code d'unité de disque (0=unité courante, 1=A:, 2=B:, 3=C:, 4=D:, 5=E:,...)
CL=Code de fonction:
| 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 formattage 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
FC=0: Tout va bien, si a été appelé avec CL=60h ou 61h, DS:DX=Adresse du bloc de paramètres
1: Erreur, dans ce cas AX=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:
| 00h |
1 octet |
Ce champs contient des fonctions spécialisés: |
| 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: |
| 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 champs contient l'attribut de périphérique: |
| 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 vérouillage de la porte est pris en charge |
| 04h à 05h |
2 octets |
Ce champs contient le nombre de cylindres |
| 06h |
1 octet |
Ce champs contient le type de support: |
| 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 champs indique le périphérique BPB |
| 26h à ??? |
? octets |
Ces champs indique l''organisation des pistes: |
| Mot |
Ce champs indique le nombre de secteurs par piste |
| Mot |
Ce champs indique le numéro du premier secteur dans la piste |
| Mot |
Ce champs indique la taille du premier secteur dans la piste |
| : |
|
| Mot |
Ce champs indique le numéro du dernier secteur de la piste |
| Mot |
Ce champs indique la taille du dernier secteur de la piste |
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:
| 00h à 01h |
2 octets (1 mot) |
Ce champs contient le nombre d'octet par secteur. |
| 02h |
1 octet |
Ce champs contient le nombre de secteur par unité d'allocation. |
| 03h à 04h |
2 octets (1 mot) |
Ce champs contient le nombre de secteur réservé au début de l'unité de disque. |
| 05h |
1 octet |
Ce champs contient le nombre de tables d'allocation de fichiers (FAT). |
| 06h à 07h |
2 octets (1 mot) |
Ce champs contient le nombre de maximum d'entrées dans le répertoire racine. |
| 08h à 09h |
2 octets (1 mot) |
Ce champs contient le nombre de secteurs. |
| 0Ah |
1 octet |
Ce champs contient le descripteur du support. |
| 0Bh à 0Ch |
2 octets (mot) |
Ce champs contient le nombre de secteurs par FAT. |
| 0Dh à 0Eh |
2 octets (mot) |
Ce champs contient le nombre de secteurs par piste. |
| 0Fh à 10h |
2 octets (mot) |
Ce champs contient le nombre de têtes. |
| 11h à 14h |
4 octets (double mot) |
Ce champs contient le nombre de secteurs cachés. |
| 15h à 1Fh |
11 octets |
Ce champs est réservé pour un usage interne ou futur. |
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:
| 00h |
1 octet |
Ce champs contient une fonction spécial (doit être égal à 0). |
| 01h à 02h |
2 octets (mot) |
Ce champs contient la tête. |
| 03h à 04h |
2 octets (mot) |
Ce champs contient le cylindre. |
| 05h à 06h |
2 octets (mot) |
Ce champs contient le secteur de début. |
| 07h à 08h |
2 octets (mot) |
Ce champs contient le secteur à transférer. |
| 09h à 0Ch |
2 octets (mot) |
Ce champs contient l'adresse du tampon de transfert. |
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:
| 00h |
1 octet |
Ce champs contient une fonction spécial (doit être égal à 0). |
| 01h à 02 |
1 octet |
Ce champs contient la tête. |
|
|
| Dernière mise à jour: Lundi, le 24 juillet 2006 |