예제 #1
0
        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);
            }
        }
예제 #2
0
        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());
                }
        }
예제 #3
0
        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());
                    }
                }
        }