/// <summary> /// Get the class Guid of a VideoDevice. /// </summary> /// <param name="device">The VideoDevice object to get the class guid.</param> /// <returns>Returns a string that indicates the class guid of the device.</returns> public static string GetDeviceClassGuid(VideoDevice device) { if (string.IsNullOrEmpty(device.Name) || string.IsNullOrEmpty(device.DeviceId)) throw new ArgumentException("Device Name and device Id can't be set to nothing."); string queryString = string.Format("SELECT * FROM Win32_PnPSignedDriver WHERE DeviceName='{0}' AND DeviceID='{1}'", device.Name, device.PnpDeviceId.Replace(@"\", @"\\")); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", queryString)) { ManagementObject queryObj = searcher.Get().OfType<ManagementObject>().FirstOrDefault(); return queryObj == null ? null : (string)queryObj["ClassGuid"]; } }
/// <summary> /// Retrieve all the video controllers currently active on the system. /// </summary> /// <returns>Returns a VideoDevice list that contains all the devices that are currently active.</returns> public static List<VideoDevice> GetPrimaryDevices() { List<VideoDevice> devices = new List<VideoDevice>(); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_VideoController")) { foreach (ManagementObject queryObj in searcher.Get()) { // The name of the device. string name = (string)queryObj["Name"]; // The description of the device. string description = (string)queryObj["Description"]; // The amount of ram available on the device. int ram = Convert.ToInt32(queryObj["AdapterRAM"]); // The ID of the device. string deviceId = (string)queryObj["DeviceID"]; // The PnP ID of the device. string pnpDeviceId = (string)queryObj["PNPDeviceID"]; // The current status of the device. string status = (string)queryObj["Status"]; // The processor information of the device. string processorInfo = (string)queryObj["VideoProcessor"]; VideoDevice device = new VideoDevice(name); device.Description = description; device.RAM = ram; device.DeviceId = deviceId; device.PnpDeviceId = pnpDeviceId; device.ProcessorInformation = processorInfo; device.Status = status; device.ClassGuid = GetDeviceClassGuid(device); devices.Add(device); } } return devices; }