ABSREAD |
Lecture absolue |
---|---|
Turbo C++ | dos.h |
Syntaxe
int absread(int drive, int nsects, long lsect, void *buffer); |
Paramètres
Nom | Description |
---|---|
drive | Ce paramètre permet d'indiquer le numéro du disque ou périphérique d'entreposage à partir duquel lire les données. Par exemple, 0 correspond au disque A (unité de disquette), 1 au disque B, 2 au disque C (premier disque dur),.... |
nsects | Ce paramètre permet de déterminer le nombre de secteurs à lire à partir du disque spécifié. Un secteur est généralement une unité de données sur un disque (souvent de 512 octets, mais cela peut varier). Par exemple, si nsects est 2, deux secteurs seront lus à partir du disque spécifié. |
lsect | Ce paramètre permet d'indiquer le secteur de départ où commencer la lecture. Il est exprimé comme un numéro de secteur logique sur le disque. Ce secteur correspond à un certain emplacement de données sur le disque. Par exemple, si lsect est 1000, la lecture commencera à partir du secteur numéro 1000 du disque. |
buffer | Ce paramètre permet d'indiquer un pointeur vers un tampon mémoire où les données lues seront entreposées. |
Description
Cette fonction permet de lire les secteurs de disque absolus.
Remarques
- absread lit des secteurs spécifiques du disque. Il ignore la structure logique du disque et ne tient pas compte des fichiers, des FAT ni des répertoires.
- absread utilise l'interruption 0x25 du DOS pour lire des secteurs spécifiques du disque.
- Le nombre de secteurs à lire est limité à 64 Ko ou à la taille du tampon, selon la valeur la plus petite.
- Valeur de retour : en cas de succès, absread renvoie 0.
- En cas d'erreur, la routine renvoie -1 et définit la variable globale errno sur la valeur renvoyée par l'appel système dans le registre AX.
- Portabilité : absread est spécifique à DOS.
Exemple
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <dos.h>
- #include <ctype.h>
-
- #define SECSIZE 512
-
- unsigned char buf[SECSIZE];
-
- int main(void) {
- int i, j, sector, drive;
- char str[10];
- printf("Entrez la lettre de l'unité de disque : ");
- gets(str);
- drive = toupper(str[0]) - 'A';
- printf("Entrez le numéro de secteur pour lire : ");
- gets(str);
- sector=atoi(str);
- if(absread(drive, 1, sector, &buf) != 0) {
- perror("Erreur de disque");
- exit(1);
- }
- printf("\nUnité de disque : %c Secteur : %d\n", 'A' + drive, sector);
- for(i = 0; i < SECSIZE; i += 16) {
- if((i / 16) == 20) {
- printf("Appuyez sur n'importe quelle touche pour continuer ...");
- getch();
- printf ("\n");
- printf("%03d: ", i);
- for(j = O; j < 16; j++) printf("%02X ", buf[i+j]);
- printf("\t");
- for(j = 0; j < 16; j++)
- if(isprint(buf[i+j])) printf("%c", buf[i+j));
- else printf (". ");
- printf("\n");
- }
- return 0;
- }
Voir également
Dernière mise à jour : Dimanche, le 28 Février 2021