OVH Cloud OVH Cloud

Comment savoir si 2 partitions sont sur le même disque dur?

5 réponses
Avatar
michael.delva
Bonjour,

je voudrais savoir quelles fonctions de l'API je dois utiliser pour
d=E9terminer si 2 partitions diff=E9rentes sont sur le m=EAme disque dur
physique...

Merci d'avance

Mike

5 réponses

Avatar
Christian ASTOR
wrote:

Bonjour,

je voudrais savoir quelles fonctions de l'API je dois utiliser pour
déterminer si 2 partitions différentes sont sur le même disque dur
physique...



DeviceIoControl()
Avatar
michael.delva
Effectivement j'ai trouvé ce qu'il me fallait dans la msdn.

Je récupère le disque de chacune des partitions et je regarde si les
signatures des disques sont les même.

Mais ce que je n'arrive pas à faire maintenant, c'est récupérer les
noms des partitions pour un disque donné.

En utilisant DeviceIOControl, je peux avoir toutes les
caractéristiques des partitions sur un disque (taille, offset de
départ, etc...) mais je n'arrive pas à récupérer le nom des
partitions, comme on peut les voir dans le Poste de Travail.

J'ai vu des fonctions qui font cela, comme GetFirstVolume et consorts,
mais comment faire intergair tout ce petit monde?

Merci d'avance

Mike

Christian ASTOR wrote:
wrote:

> Bonjour,
>
> je voudrais savoir quelles fonctions de l'API je dois utiliser pour
> déterminer si 2 partitions différentes sont sur le même disque dur
> physique...

DeviceIoControl()


Avatar
Christian ASTOR
wrote:

Effectivement j'ai trouvé ce qu'il me fallait dans la msdn.

Je récupère le disque de chacune des partitions et je regarde si les
signatures des disques sont les même.

Mais ce que je n'arrive pas à faire maintenant, c'est récupérer les
noms des partitions pour un disque donné.

En utilisant DeviceIOControl, je peux avoir toutes les
caractéristiques des partitions sur un disque (taille, offset de
départ, etc...) mais je n'arrive pas à récupérer le nom des
partitions, comme on peut les voir dans le Poste de Travail.



Les noms qui sont affichés dans le poste de travail sont juste les
labels, les mêmes que ceux donnés par P. Magic ou renvoyés par
GetVolumeInformation()
Avatar
michael.delva
Ca je sais oui.

Mais partant d'une lettre de partition, je peux avoir les infos sur le
disque sur lequel se trouve cette partition.

Comment je peux avoir l'inverse,à savoir une fois que j'ai le disque,
avoir le nom des partitions installées dessus?

Il faut que je récupère les tailles des partitions et que je compare
avec ce que me donne GetVolumeInformation pour trouver la bonne?

Christian ASTOR wrote:
wrote:

> Effectivement j'ai trouvé ce qu'il me fallait dans la msdn.
>
> Je récupère le disque de chacune des partitions et je regarde si les
> signatures des disques sont les même.
>
> Mais ce que je n'arrive pas à faire maintenant, c'est récupérer l es
> noms des partitions pour un disque donné.
>
> En utilisant DeviceIOControl, je peux avoir toutes les
> caractéristiques des partitions sur un disque (taille, offset de
> départ, etc...) mais je n'arrive pas à récupérer le nom des
> partitions, comme on peut les voir dans le Poste de Travail.

Les noms qui sont affichés dans le poste de travail sont juste les
labels, les mêmes que ceux donnés par P. Magic ou renvoyés par
GetVolumeInformation()


Avatar
Christian ASTOR
wrote:

Ca je sais oui.

Mais partant d'une lettre de partition, je peux avoir les infos sur le
disque sur lequel se trouve cette partition.

Comment je peux avoir l'inverse,à savoir une fois que j'ai le disque,
avoir le nom des partitions installées dessus?



Par ex, en énumérant les volumes (FindFirstVolume(), ...) +
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS pour choisir le disque
+ GetVolumePathNamesForVolumeName()-GetVolumeInformation() pour la
lettre et libellé.