xeeynamo (Normal User)
Pro
Messaggi: 66
Iscritto: 14/03/2008
|
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:
Codice sorgente - presumibilmente C/C++ |
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!
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
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?
|
|
xeeynamo (Normal User)
Pro
Messaggi: 66
Iscritto: 14/03/2008
|
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 >.< |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Complesso ?
Ci sono apposite API di Windows per ottenere le informazioni ... ad esempio (e' solo un esempio) ...
Codice sorgente - presumibilmente C# |
#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 ...
|
|
xeeynamo (Normal User)
Pro
Messaggi: 66
Iscritto: 14/03/2008
|
oddio funziona alla perfezione!! Mi da le lettere delle unità, la dimensione e il tipo di filesystem! Che dire... PERFETTO!!! Grazie mille
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Postato originariamente da xeeynamo:
Grazie mille |
Di nulla ... se studi un po' quelle API (e le altre per la gestione dei volumi), riesci ad ottenere anche altre info ... |
|