Пример #1
0
 internal static string[] GetMountPoints(string VHD)
 {
     if (VHD == null)
         return null;
     List<string> ret = new List<string>();
     var image = new ManagementObjectSearcher(Utility.GetScope(),
                                              new SelectQuery(Utility.DiskStrings.MountedStorage)).Get()
                                                                                                  .Cast<ManagementObject>()
                                                                                                  .FirstOrDefault(Obj => (Obj["Name"].ToString()
                                                                                                                                     .Equals(VHD, StringComparison.InvariantCultureIgnoreCase)));
     if (image == null)
         return new string[0];
     var baseScope = new ManagementScope(@"root\cimv2");
     baseScope.Connect();
     var disk = new ManagementObjectSearcher(baseScope,
                                             new SelectQuery(Utility.DiskStrings.DiskDrive,
                                                             "SCSILogicalUnit=" + image["Lun"] +
                                                             " and SCSIPort=" + image["PortNumber"] +
                                                             " and SCSITargetID=" + image["TargetID"]))
         .Get().Cast<ManagementObject>().FirstOrDefault();
     var parts = disk.GetRelated(Utility.DiskStrings.DiskPartition);
     foreach (var drives in from ManagementObject part in parts select part.GetRelated(Utility.DiskStrings.LogicalDisk))
     {
         ret.AddRange(from ManagementObject drive in drives select (drive["DeviceID"].ToString()+@"\"));
     }
     return ret.ToArray();
 }