Example #1
0
 public void CreateVirtualHardDisk(IVirtualHardDiskSettingData virtualDiskSettingData)
 {
     using (ManagementBaseObject methodParameters = this._Instance.GetMethodParameters(nameof(CreateVirtualHardDisk)))
     {
         methodParameters["VirtualDiskSettingData"] = (object)((IWMICommon)virtualDiskSettingData).Object.GetText(TextFormat.CimDtd20);
         this._Instance.InvokeAndWait(nameof(CreateVirtualHardDisk), methodParameters).TryDispose();
     }
 }
        public static IVirtualHardDiskSettingData Parse(ManagementScope scope, string embedded)
        {
            IVirtualHardDiskSettingData hardDiskSettingData = VirtualHardDiskSettingData.CreateVirtualHardDiskSettingData(scope);
            XElement         xelement1        = XElement.Parse(embedded);
            ManagementObject managementObject = ((IWMICommon)hardDiskSettingData).Object;

            foreach (XElement xelement2 in xelement1.Elements((XName)"PROPERTY").Where <XElement>((Func <XElement, bool>)(e => e.Attribute((XName)"PROPAGATED") == null)))
            {
                managementObject[xelement2.Attribute((XName)"NAME").Value] = (object)xelement2.Value;
            }
            return(hardDiskSettingData);
        }
Example #3
0
 public VHDInfo GetCfg()
 {
     using (IImageManagementService managementService = ImageManagementService.GetImageManagementService(this._Host))
     {
         using (IVirtualHardDiskSettingData hardDiskSettingData = managementService.GetVirtualHardDiskSettingData(this._Path))
         {
             using (IVirtualHardDiskState virtualHardDiskState = managementService.GetVirtualHardDiskState(this._Path))
                 return new VHDInfo()
                        {
                            Path            = this._Path,
                            FileSize        = (long)virtualHardDiskState.FileSize,
                            MaxInternalSize = (long)hardDiskSettingData.MaxInternalSize,
                            ParentPath      = hardDiskSettingData.ParentPath,
                            Type            = (int)hardDiskSettingData.Type
                        };
         }
     }
 }
Example #4
0
 public void CreateVirtualDisk(string path, ulong size, string virtualDiskType, ushort format)
 {
     if (File.Exists(path))
     {
         this._Logger.Information(string.Format("Validating existing disk {0}...", (object)path));
         try
         {
             using (IVirtualDisk virtualDisk = this.ValidateVirtualDisk(path))
             {
                 if (virtualDisk != null)
                 {
                     if (virtualDisk.GetCfg().MaxInternalSize >= (long)size)
                     {
                         this._Logger.Information("Existing disk validated.");
                         return;
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             if (this.HandleException(ex))
             {
                 throw;
             }
             else
             {
                 this._Logger.Warning(ex, "Existing disk validation failed");
             }
         }
         this._Logger.Information(string.Format("Deleting existing disk {0}...", (object)path));
         File.Delete(path);
     }
     if ((long)(size % 4096UL) != 0L)
     {
         size += 4096UL - size % 4096UL;
     }
     using (IImageManagementService managementService = ImageManagementService.GetImageManagementService(this._Host))
     {
         using (IVirtualHardDiskSettingData hardDiskSettingData = VirtualHardDiskSettingData.CreateVirtualHardDiskSettingData(this._Host))
         {
             hardDiskSettingData.Path            = path;
             hardDiskSettingData.MaxInternalSize = size;
             if (!(virtualDiskType == "Fixed"))
             {
                 if (!(virtualDiskType == "Dynamic"))
                 {
                     throw new HyperVException("Don't know how to create a disk of type " + virtualDiskType);
                 }
                 hardDiskSettingData.Type = (ushort)3;
             }
             else
             {
                 hardDiskSettingData.Type = (ushort)2;
             }
             hardDiskSettingData.Format             = format;
             hardDiskSettingData.PhysicalSectorSize = 512U;
             managementService.CreateVirtualHardDisk(hardDiskSettingData);
         }
     }
 }