Oppure

Loading
14/03/08 15:15
xeeynamo
Ciao a tutti, questo è il mio primo posto ma seguo il sito da un bel pò di tempo :)
Comunque vediamo il mio problema... Stò creando un tool che deve operare solo su hard disk e non su unità di sola lettura come lettori cd. Per adesso l'unica soluzione che ho trovato per vedere le unità di lettura e scrittura ho usato questo codice fatto da me:
menu=1;
do
{           system("cls");
           sprintf(cmd,"cd %c:",drive);
           debug=system(cmd);
           if (debug==0)
           {
              system("cls");
              printf("\nUnita' rilevate: %d\n",unit);
              printf("--------------------------------------------------------------------------------\n");
              sprintf(cmd,"defrag -a %c:",drive);
              debug=system(cmd);
              if (debug==0)
                 unit++;
           }
           if (drive==91)
              menu=0;
           drive++;
} while (menu)


Purtroppo e' un sistema un po' lento e inoltre mentre analizza le unita' appaiono le scritte di errore se l'unita' risulta inaccessibile (quindi non esiste). Ho fatto che il comando cd controlla se l'unita' esiste e se esiste allora analizza l'unita' con defrag.exe per vedere se l'unita' permette la scrittura. Qualcuno mi sa consigliare un sistema piu' performante? Un grazie enorme a chi mi trova una soluzione!
aaa
15/03/08 18:05
gantonio
Prova a porre la domanda meglio la domanda di cio' che vuoi ottenere senza fare esempi ...

Vuoi un elenco a video delle unita' disco (fissi e rimovibili) ... oppure ho capito male?
aaa
15/03/08 18:10
xeeynamo
Postato originariamente da gantonio:

Prova a porre la domanda meglio la domanda di cio' che vuoi ottenere senza fare esempi ...

Vuoi un elenco a video delle unita' disco (fissi e rimovibili) ... oppure ho capito male?

Più o meno si! Cioè mi servirebbe memorizzare in una variabile le lettere delle unità disco disponibili! Sò che è un pò complesso ma mi servirebbe >.<
aaa
15/03/08 18:29
gantonio
Complesso ?

Ci sono apposite API di Windows per ottenere le informazioni ... ad esempio (e' solo un esempio) ...

#include <windows.h>

...

char dr[4];
char vname[MAX_PATH+1], fsname[MAX_PATH+1];
DWORD vsn, fsfl;
UINT dt;
	
strcpy(dr, "A:\");
for(dr[0]='A'; dr[0]<='Z'; dr[0]++)
   if(GetVolumeInformation(dr, vname, MAX_PATH+1, &vsn, NULL, &fsfl, fsname, MAX_PATH+1))
   {
      dt = GetDriveType(dr);
      printf("%c (type %d) : %s %X %s (%X)\n", dr[0], dt, vname, vsn, fsname, fsfl);
   }


Ovviamente utilizza i dati che ti servono ...
aaa
15/03/08 18:35
xeeynamo
oddio funziona alla perfezione!! Mi da le lettere delle unità, la dimensione e il tipo di filesystem! Che dire... PERFETTO!!! Grazie mille:k:
aaa
15/03/08 19:03
gantonio
Postato originariamente da xeeynamo:

Grazie mille:k:


Di nulla ... se studi un po' quelle API (e le altre per la gestione dei volumi), riesci ad ottenere anche altre info ...
aaa