Bonjour,
Voila tout est dans le titre : comment faire pour récupérer les partitions (C, D, E etc...) d'un ordinateur, si elles sont présentes ?
Merci d'avance.
Bonjour,
Voila tout est dans le titre : comment faire pour récupérer les partitions (C, D, E etc...) d'un ordinateur, si elles sont présentes ?
Merci d'avance.
Sous Windows, je fais une boucle avec GetVolumeInformation() sur chaque lecteur, mais il y a peut-être plus propre...
Bin j'ai trouvé FindFirstVolume() sur msdn, mais malgré avoir inclus ce qu'il fallait (à savoir windows.h), elle n'est pas déclarée. Je ne vois pas ce qui peut se passer...
Tu as pensé aux defines _WIN32_WINNT et WINVER ?
Oui pour le WIN32_WINNT : il est redéfini.
Mais par contre l'autre ... qu'est ce ?
[EDIT] Oui celui là aussi est redéfini.
il y a la fonction GetLogicalDriveStrings qui rempli un buffer avec tous les disques valide du systeme.
Mais je suppose que cette fonction me retournera une multistring (décidément c'est pas pratique ... merci microsoft) contenant tous lesdisques logiques, y compris les lecteurs flash etc... or moi je ne voudrais que les partitions.
Il doit bien y avoir un moyen de la faire marcher cette satanée fonction !
En fait j'ai fait une fonction permettant de récupérer toutes les musiques présentes sur le disque (merci Medinoc pour ton aide) mais encore me faut il les lettres assignées par le BIOS (C:\\, D:\\ etc) pour pouvoir laisser le choix du disque à scanner à l'utilisateur.
Avec ces infos, que me conseilleriez vous ?
FindFirstVolume ne retourne pas les partitions.
Ca me retourne :
La meilleur solution reste GetLogicalDriveStrings + GetDriveType.Volume found is "\\?\Volume{48f56101-20b4-11da-bc19-806d6172696f}\".
Volume found is "\\?\Volume{d856cb60-f8ca-11da-9c7c-806d6172696f}\".
Volume found is "\\?\Volume{d856cb61-f8ca-11da-9c7c-806d6172696f}\".
Volume found is "\\?\Volume{d856cb62-f8ca-11da-9c7c-806d6172696f}\".
Volume found is "\\?\Volume{48f560fb-20b4-11da-bc19-806d6172696f}\".
Volume found is "\\?\Volume{48f560fc-20b4-11da-bc19-806d6172696f}\".
Volume found is "\\?\Volume{48f560fd-20b4-11da-bc19-806d6172696f}\".
Volume found is "\\?\Volume{4920faf0-090b-11db-824e-806d6172696f}\".
Volume found is "\\?\Volume{48f560f6-20b4-11da-bc19-806d6172696f}\".
Exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <windows.h> #include <stdio.h> int main() { char buf[4 * 26 + 1]; char *p; GetLogicalDriveStrings( sizeof(buf) - 1, buf ); for( p = buf; *p != '\0'; p += 4 ) { UINT uType = GetDriveType( p ); if ( uType == DRIVE_FIXED ) { printf( "DRIVE_FIXED -> %s\n", p ); } } return 0; }
Merci tu as eu exactement la même idée que moi. Je finissais justement de l'intégrer à mon code. Pour info, cela marche parfaitement. Mais j'ai une question : Conçernant les lecteurs CD / DVD : Si aucun disque n'est présent et que l'utilisateur les sélectionne quand même (admettons) L'utilisation des findfirstfile et autre plantera ou pas ? C'est pour savoir si j'oblige à choisir entre les partitions ou aussi les lecteurs...
Planter ? non.Envoyé par kidpaddle2
FindFirstFile renverra INVALID_HANDLE_VALUE et GetLastError renverra ERROR_NOT_READY.
OK merci de votre aide, je vais pouvoir finir mon projet.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager