/// <summary> /// This method scans the current machine for all CDROM devices found in the system. /// </summary> public void ScanForDevices() { if (BeforeScan != null) { DeviceManagerRescanArgs args = new DeviceManagerRescanArgs(); BeforeScan(this, args); } m_logger.LogMessage(new UserMessage(UserMessage.Category.Debug, 0, "Scanning for devices ... ")) ; OperatingSystem os = Environment.OSVersion; m_logger.LogMessage(new UserMessage(UserMessage.Category.Info, 0, "Operating System: " + os.ToString())); m_logger.LogMessage(new UserMessage(UserMessage.Category.Info, 0, "Platform: " + os.Platform.ToString())); int ossize = 32 ; if (IntPtr.Size == 8) ossize = 64 ; m_logger.LogMessage(new UserMessage(UserMessage.Category.Debug, 0, "OS Word Size: " + ossize.ToString())) ; m_devices_found.Clear(); for (int i = 0; i < 100; i++) { uint dlev = (uint)((i > 5) ? 9 : 8); string name = "\\\\.\\CDROM" + i.ToString(); m_logger.LogMessage(new UserMessage(UserMessage.Category.Debug, dlev, "Checking device " + name + " ... ")); Device dev = new Device(m_logger) ; if (!dev.Open(name)) { m_logger.LogMessage(new UserMessage(UserMessage.Category.Debug, dlev, " ... device open failed")); continue ; } string letter = GetLetterFromDeviceName(name); DeviceInfo info = DeviceInfo.CreateDevice(name, letter); if (!info.ExtractInfo(dev)) { m_logger.LogMessage(new UserMessage(UserMessage.Category.Debug, dlev, " ... cannot extract inquiry information from the drive")); string str = "The drive '" + letter + "' (" + name + ") is a CD/DVD driver, but is not a valid MMC device."; m_logger.LogMessage(new UserMessage(UserMessage.Category.Error, 0, str)); str = "This drive is not supported by BwgBurn and is probably an older device."; m_logger.LogMessage(new UserMessage(UserMessage.Category.Error, 0, str)); continue; } m_logger.LogMessage(new UserMessage(UserMessage.Category.Debug, dlev, " ... device added to device list")); m_devices_found.Add(info) ; dev.Close() ; } if (AfterScan != null) { DeviceManagerRescanArgs args = new DeviceManagerRescanArgs(); AfterScan(this, args); } string devlist = string.Empty; foreach (DeviceInfo info in m_devices_found) { if (devlist.Length > 0) devlist += ", "; devlist += info.ShortDesc; } m_logger.LogMessage(new UserMessage(UserMessage.Category.Debug, 0, "Found devices ... " + devlist)); foreach (DeviceInfo info in m_devices_found) { UserMessage m = new UserMessage(UserMessage.Category.Debug, 6, "Found Device: " + info.DeviceLetter) ; m_logger.LogMessage(m); m = new UserMessage(UserMessage.Category.Debug, 6, " NT Name = " + info.DeviceName); m_logger.LogMessage(m); m = new UserMessage(UserMessage.Category.Debug, 6, " Vendor = " + info.InquiryData.VendorIdentification.Trim()); m_logger.LogMessage(m); m = new UserMessage(UserMessage.Category.Debug, 6, " Product = " + info.InquiryData.ProductIdentification.Trim()); m_logger.LogMessage(m); m = new UserMessage(UserMessage.Category.Debug, 6, " Revision = " + info.InquiryData.ProductRevision.Trim()); m_logger.LogMessage(m); } }