Encore un titre obscur... j'ai pas trouvé mieux :p
En fait, il s'agit de manipuler WMI (je ne connais que très peu WMI)
afin d'établir le lien entre lecteur logique (C: par exemple) et la classe WMI représentant le lecteur physique.
Il s'agit d'aider un peu la discussion débutée ici:
http://www.vbfrance.com/code.aspx?ID=27883
Source / Exemple :
Private Function GetDiskDriveFromLogical(ByRef vsDriveLetter As String) As Object
Dim sBuffer As String
Dim oWMI As Object
Dim oItem As Object
Dim oCol As Object
If LenB(vsDriveLetter) Then
sBuffer = Left$(vsDriveLetter, 1)
Else
sBuffer = Left$(App.Path, 1)
End If
Set oWMI = GetObject("winmgmts:root\cimv2")
If Not Nothing Is oWMI Then
'# On récupère la partition liée au lecteur logique
Set oCol = oWMI.ExecQuery("REFERENCES OF {Win32_LogicalDisk='" & sBuffer & ":'} WHERE ResultClass = Win32_LogicalDiskToPartition")
For Each oItem In oCol
'# On passe du lien, à la partition
Set oItem = GetObject("winmgmts:" & oItem.Antecedent)
Exit For
Next oItem
'# On refait la même, on passe de la partition au disque physique
sBuffer = oItem.DeviceId
Set oCol = oWMI.ExecQuery("REFERENCES OF {Win32_DiskPartition='" & sBuffer & "'} WHERE ResultClass=Win32_DiskDriveToDiskPartition")
For Each oItem In oCol
'# On passe du lien "partition/disque" au disque
Set GetDiskDriveFromLogical = GetObject("winmgmts:" & oItem.Antecedent)
Exit For
Next oItem
End If
End Function
Conclusion :
Y'a peut être plus simple, que de faire toutes ces requêtes. Comme énoncé, je ne manipule que très occasionnellement WMI, donc...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.