Section courante

A propos

Section administrative du site

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

Exemple

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <dos.h>
  5. #include <ctype.h>
  6.  
  7. #define SECSIZE 512
  8.  
  9. unsigned char buf[SECSIZE];
  10.  
  11. int main(void) {
  12.  int i, j, sector, drive;
  13.  char str[10];
  14.  printf("Entrez la lettre de l'unité de disque : ");
  15.  gets(str);
  16.  drive = toupper(str[0]) - 'A';
  17.  printf("Entrez le numéro de secteur pour lire : ");
  18.  gets(str);
  19.  sector=atoi(str);
  20.  if(absread(drive, 1, sector, &buf) != 0) {
  21.   perror("Erreur de disque");
  22.   exit(1);
  23.  }
  24.  printf("\nUnité de disque : %c Secteur : %d\n", 'A' + drive, sector);
  25.  for(i = 0; i < SECSIZE; i += 16) {
  26.   if((i / 16) == 20) {
  27.    printf("Appuyez sur n'importe quelle touche pour continuer ...");
  28.    getch();
  29.    printf ("\n");
  30.   printf("%03d: ", i);
  31.   for(j = O; j < 16; j++) printf("%02X ", buf[i+j]);
  32.   printf("\t");
  33.   for(j = 0; j < 16; j++) 
  34.     if(isprint(buf[i+j])) printf("%c", buf[i+j));
  35.                      else printf (". ");
  36.   printf("\n");
  37.  }
  38.  return 0;
  39. }

Voir également

abswrite, biosdisk



Dernière mise à jour : Dimanche, le 28 Février 2021