Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Ottenere le lettere di ogni unità
Forum - C/C++ - Ottenere le lettere di ogni unità

Avatar
xeeynamo (Normal User)
Pro


Messaggi: 66
Iscritto: 14/03/2008

Segnala al moderatore
Postato alle 16:15
Venerdì, 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++

  1. menu=1;
  2. do
  3. {           system("cls");
  4.            sprintf(cmd,"cd %c:",drive);
  5.            debug=system(cmd);
  6.            if (debug==0)
  7.            {
  8.               system("cls");
  9.               printf("\nUnita' rilevate: %d\n",unit);
  10.               printf("--------------------------------------------------------------------------------\n");
  11.               sprintf(cmd,"defrag -a %c:",drive);
  12.               debug=system(cmd);
  13.               if (debug==0)
  14.                  unit++;
  15.            }
  16.            if (drive==91)
  17.               menu=0;
  18.            drive++;
  19. } 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!

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 19:05
Sabato, 15/03/2008
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?

PM Quote
Avatar
xeeynamo (Normal User)
Pro


Messaggi: 66
Iscritto: 14/03/2008

Segnala al moderatore
Postato alle 19:10
Sabato, 15/03/2008
Testo quotato

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 >.<

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 19:29
Sabato, 15/03/2008
Complesso ?

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

Codice sorgente - presumibilmente C#

  1. #include <windows.h>
  2.  
  3. ...
  4.  
  5. char dr[4];
  6. char vname[MAX_PATH+1], fsname[MAX_PATH+1];
  7. DWORD vsn, fsfl;
  8. UINT dt;
  9.        
  10. strcpy(dr, "A:\\");
  11. for(dr[0]='A'; dr[0]<='Z'; dr[0]++)
  12.    if(GetVolumeInformation(dr, vname, MAX_PATH+1, &vsn, NULL, &fsfl, fsname, MAX_PATH+1))
  13.    {
  14.       dt = GetDriveType(dr);
  15.       printf("%c (type %d) : %s %X %s (%X)\n", dr[0], dt, vname, vsn, fsname, fsfl);
  16.    }



Ovviamente utilizza i dati che ti servono ...

PM Quote
Avatar
xeeynamo (Normal User)
Pro


Messaggi: 66
Iscritto: 14/03/2008

Segnala al moderatore
Postato alle 19:35
Sabato, 15/03/2008
oddio funziona alla perfezione!! Mi da le lettere delle unità, la dimensione e il tipo di filesystem! Che dire... PERFETTO!!! Grazie mille:k:

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 20:03
Sabato, 15/03/2008
Testo quotato

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 ...

PM Quote