Accès à un disque SCSI

Accès à un disque SCSI - C - Programmation

Marsh Posté le 13-04-2005 à 11:07:36    

Bonjour à tous !
 
Je dispose d'un code source en C qui réalise la chose suivante : il active la première partition d'un disque et désactive les trois autres.
 
Mon problème, c'est qu'il marche très bien pour un disque branché en IDE, mais walou pour un disque en SCSI.
 
Donc est-ce que quelqu'un saurait me dire les modifications à apporter pour le rendre compatible en SCSI ?
 
Merci
 

Code :
  1. #include <dos.h>
  2. // Source pour activer la 1ère partition du premier disque
  3. //  et desactiver les autres partitions du même disque
  4. //  ( IDE0 maître )
  5. struct Partition
  6. {
  7.   unsigned char flag;
  8.   char description[15];
  9. };
  10. struct Mbr
  11. {
  12.   char bootCode[0x1BE];
  13.   struct Partition table[4];
  14.   char signature[2];
  15. };
  16. int main()
  17. {
  18. struct Mbr mbr;
  19. union REGS r, rout;
  20. struct SREGS sr;
  21. sr.es=FP_SEG(&mbr);
  22. r.x.bx=FP_OFF(&mbr);
  23. r.x.ax= 0x201;                  // lecture d'un secteur
  24. r.h.dl= 0x80;                   // 1er disque
  25.    r.x.cx= 1;                      // 1er secteur
  26. r.h.dh= 0;                      // piste 0 et tête 0
  27. int86x(0x13, &r, &rout, &sr);   // 1ère lecture factice au cas où le lecteur serait arrêté
  28. int86x(0x13, &r, &r, &sr);
  29. if( r.x.cflag )
  30.  return 1;           // erreur de lecteur
  31. else
  32. {
  33.  mbr.table[0].flag= 0x80;      // 1ère partition
  34.  mbr.table[1].flag= 0x80;      // 2ème partition
  35.  mbr.table[2].flag= 0x80;      // 3ème partition
  36.  mbr.table[3].flag= 0x80;      // 4ème partition
  37.  sr.es=FP_SEG(&mbr);
  38.  r.x.bx=FP_OFF(&mbr);
  39.  r.x.ax= 0x301;                // écriture d'un secteur
  40.  r.h.dl= 0x80;                 // 1er disque
  41.  r.x.cx= 1;                    // 1er sercteur
  42.  r.h.dh= 0;                    // piste 0 et tête 0
  43.  int86x(0x13, &r, &r, &sr);
  44.  if( r.x.cflag )
  45.   return 2;
  46.  else
  47.   return 0;
  48. }
  49. }

Reply

Marsh Posté le 13-04-2005 à 11:07:36   

Reply

Marsh Posté le 13-04-2005 à 11:16:36    

Suis pas spécialiste, mais de mémoire le code n'est pas du tout adapté à du SCSII, ça c'est pour de l'IDE et c'est tout à priori, et encore ça me semble un peu sauvage ..
 
L'accès au SCSII est totalement différent, il faut que tu trouves de la doc, ça se fait avec des sortes de requêtes READ/WRITE il me semble ...

Reply

Marsh Posté le 13-04-2005 à 11:29:59    

cricri_ a écrit :

Suis pas spécialiste, mais de mémoire le code n'est pas du tout adapté à du SCSII, ça c'est pour de l'IDE et c'est tout à priori, et encore ça me semble un peu sauvage ..


C'est bien pour ca que je demande si il est exploitable pour du SCSI : parce qu'il ne marche qu'en IDE !  :sweat:  
 
Je vais taché de trouver de la doc. SI quelqu'un a des adresses ....  :D  

Reply

Marsh Posté le 13-04-2005 à 16:49:25    

up ?

Reply

Marsh Posté le 14-04-2005 à 14:44:42    

up ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed