private void btnAdvMountIso_Click(object sender, RoutedEventArgs e) { if (!CheckImDiskInstalled()) { ShowInstallImDiskMessage(); return; } var mi = new MountIso() { Owner = this }; mi.ShowDialog(); if (mi.yep) { string DriveLetter = String.Format("{0}:", mi.chkPreselect.IsChecked == true ? ImDiskAPI.FindFreeDriveLetter() : (char)mi.cbbLetter.SelectedItem); long size = mi.chkPresized.IsChecked == true ? 0 : Convert.ToInt64(mi.txtSize.Text); ImDiskFlags imflags; switch (mi.cbbType.SelectedIndex) { case 0: //Hard Drive imflags = ImDiskFlags.DeviceTypeHD; break; case 1: // CD/DVD imflags = ImDiskFlags.DeviceTypeCD; break; case 2: // Floppy Disk imflags = ImDiskFlags.DeviceTypeFD; break; case 3: // Raw Data imflags = ImDiskFlags.DeviceTypeRAW; break; default: imflags = ImDiskFlags.DeviceTypeCD; break; } switch (mi.cbbAccess.SelectedIndex) { case 0: // Access directly imflags |= ImDiskFlags.FileTypeDirect; break; case 1: // Copy to memory imflags |= ImDiskFlags.FileTypeAwe; break; default: imflags |= ImDiskFlags.FileTypeDirect; break; } if (mi.chkRemovable.IsChecked == true) imflags |= ImDiskFlags.Removable; if (mi.chkReadOnly.IsChecked == true) imflags |= ImDiskFlags.ReadOnly; ImDiskAPI.CreateDevice(size, 0, 0, 0, 0, imflags, _ShellListView.GetFirstSelectedItem().ParsingName, false, DriveLetter, IntPtr.Zero); } }