internal ManagementObject CreateResource(Resources resource) { string resourcePoolClass = "Msvm_ResourcePool"; if (resource == Resources.Processor) { resourcePoolClass = "Msvm_ProcessorPool"; } string resourceSubType = ""; switch (resource) { case Resources.Processor: resourceSubType = "Microsoft:Hyper-V:Processor"; break; case Resources.Memory: resourceSubType = "Microsoft:Hyper-V:Memory"; break; case Resources.SCSIController: resourceSubType = "Microsoft:Hyper-V:Synthetic SCSI Controller"; break; case Resources.VirtualHardDrive: resourceSubType = "Microsoft:Hyper-V:Synthetic Disk Drive"; break; case Resources.VirtualHardDisk: resourceSubType = "Microsoft:Hyper-V:Virtual Hard Disk"; break; case Resources.VirtualDvdDrive: resourceSubType = "Microsoft:Hyper-V:Synthetic DVD Drive"; break; case Resources.VirtualDvdDisk: resourceSubType = "Microsoft:Hyper-V:Virtual CD/DVD Disk"; break; case Resources.NetworkAdapter: resourceSubType = "Microsoft:Hyper-V:Synthetic Ethernet Port"; break; case Resources.SwitchPort: resourceSubType = "Microsoft:Hyper-V:Ethernet Connection"; break; } string defaultSettingPath = null; ObjectQuery query = new ObjectQuery($"SELECT * FROM {resourcePoolClass} WHERE ResourceSubType = \"{resourceSubType}\" AND Primordial = True"); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(virtualizationScope, query)) using (ManagementObject resourcePool = searcher.Get().First()) using (ManagementObjectCollection capabilitiesCollection = resourcePool.GetRelated("Msvm_AllocationCapabilities", "Msvm_ElementCapabilities", null, null, null, null, false, null)) using (ManagementObject capabilities = capabilitiesCollection.First()) foreach (ManagementObject settingAssociation in capabilities.GetRelationships("Msvm_SettingsDefineCapabilities")) { if ((ushort)settingAssociation["ValueRole"] == 0) { defaultSettingPath = (string)settingAssociation["PartComponent"]; break; } } if (defaultSettingPath == null) { throw new ManagementException("Unable to find the Default Resource Settings."); } using (ManagementObject defaultSetting = new ManagementObject(defaultSettingPath)) { defaultSetting.Scope = virtualizationScope; defaultSetting.Get(); return(defaultSetting); } }
internal ManagementObject GetVirtualSwitch(string name) { ObjectQuery query = new ObjectQuery($"SELECT * FROM Msvm_VirtualEthernetSwitch WHERE Caption = \"Virtual Switch\" AND ElementName = \"{name}\""); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(virtualizationScope, query)) using (ManagementObjectCollection collection = searcher.Get()) { if (collection.Count == 0) { throw new ManagementException("Unable to find the Virtual Switch."); } return(collection.First()); } }
internal ManagementObject GetUntrustedGuardian() { ObjectQuery query = new ObjectQuery("SELECT * FROM MSFT_HgsGuardian WHERE Name = \"UntrustedGuardian\""); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(hgsScope, query)) using (ManagementObjectCollection collection = searcher.Get()) { if (collection.Count == 0) { return(null); } else { return(collection.First()); } } }