2010-01-28 3 views
6

Existe-t-il un moyen de récupérer une connexion entre un point de montage (un volume qui est monté dans le système de fichiers au lieu d'être monté sur une lettre de lecteur) et ses disques physiques associés avec WMI? Par exemple, j'ai un point de montage de volume sur un serveur W2K8 qui est monté sur "C: \ Data \" et le point de montage est étalé sur les disques physiques 2, 4 et 5 du serveur (le gestionnaire de données). du Gestionnaire de serveur montre que) mais je ne peux pas trouver un moyen de le savoir en utilisant WMI.Obtenez les lecteurs de disque physique correspondants des points de montage avec des requêtes WMI?

volumes qui ont obtenu une lettre de lecteur peuvent être connectés avec les classes WMI-Win32_DiskDrive -> Win32_DiskDriveToDiskPartition -> Win32_DiskPartition -> Win32_LogicalDiskToPartition -> Win32_LogicalDisk - mais le problème est que les points de montage de volume ne figurent pas dans la classe Win32_LogicalDisk, ils sont seulement listés dans Win32_Volume. Et je n'ai pas trouvé un moyen de connecter la classe Win32_Volume à la classe Win32_DiskDrive - il manque des classes de liaison.

Est-ce que quelqu'un connaît une solution?

Répondre

2

La seule façon que je connaisse est d'utiliser l'API Win32 pour aider.

Vous open a handle au volume en utilisant Win32_Volume .DeviceID, légèrement modifié. Vous pouvez ouvrir une poignée au volume en utilisant le format:

\\.\Volume{[GUID]} 

Vous devez ensuite émettre IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS sur la poignée ouverte pour récupérer une structure VOLUME_DISK_EXTENTS. Cette structure contiendra une liste d'identifiants de disque physique pour le volume.

L'utilisation de ces disques ids vous pouvez interroger WMI sur Win32_DiskDrive .Index pour obtenir le disque correspondant.

Questions connexes