anisZ007
Messages postés3Date d'inscriptionvendredi 1 décembre 2000StatutMembreDernière intervention22 mai 2008
-
20 mai 2008 à 13:50
anisZ007
Messages postés3Date d'inscriptionvendredi 1 décembre 2000StatutMembreDernière intervention22 mai 2008
-
22 mai 2008 à 02:29
Slt à tous,
J'ecris un programme qui permet de lister l'ensemble des volumes montés j'utilise pour ca les fct de l'API Windows (FindFirstVolumeMountPoint ...)
Mais j'arrive pas à récupérer le disque auquel appartient ce volume monté. J'utilise IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS mais je n’arrive pas car lorsque je crée le Handle avec createFile en donnant le chemin du répertoire dans lequel le volume est monté il me retourne toujours INVALID_HANDLE_VALUE.
anisZ007
Messages postés3Date d'inscriptionvendredi 1 décembre 2000StatutMembreDernière intervention22 mai 2008 20 mai 2008 à 16:49
Pour les volumes telque C:,D: ca marche
Pour les "volume mount points" qui sont montés dans des repertoire par exemple je monte D: sous C:\mnt\Ddrive
j'ai testé les syntaxes suisvantes : "C:\mnt\Ddrive" , [file://\\.\C\mnt\lecteurD "\\.\C\mnt\Ddrive]" ou avec la chaine retourné par GetVolumeNameForVolumeMountPoint
Mais ca marche pas
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 20 mai 2008 à 21:07
Bof ça m'apprendra à répondre sans réfléchir...
effectivement le mieux je pense c'est d'utiliser GetVolumeNameForVolumeMountPoint().
Ca n'a pas marché chez toi car GetVolumeEtc() retourne un nom sous ce format :
\\?\Volume{...}\
alors que CreateFile() n'accepte pas (pour les volumes) de terminaison en \, il faut lui passer simplement
\\?\Volume{...}
sinon il croit que c'est la racine enfin bref.
facile :
GetVolumeNameEtc(L"C:",pBuffer,...);
pBuffer[48]=0;
CreateFile(pBuffer,...);
pas d'inquiétude sur l'index car le nom de volume a toujours la même taille.