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);
}
}