void device_unload_mess_hd(mess_image *image) { struct mess_hd *hd = get_drive(image); assert(hd->hard_disk_handle); hard_disk_close(hd->hard_disk_handle); hd->hard_disk_handle = NULL; drive_handles[image_index_in_device(image)] = NULL; }
/* imghd_close() Close MAME HD image */ void imghd_close(struct mess_hard_disk_file *disk) { if (disk->hard_disk) { hard_disk_close(disk->hard_disk); disk->hard_disk = nullptr; } if (disk->stream) stream_close(disk->stream); }
int harddisk_image_device::internal_load_hd() { astring tempstring; chd_error err = CHDERR_NONE; m_chd = NULL; if (m_hard_disk_handle) hard_disk_close(m_hard_disk_handle); /* open the CHD file */ if (software_entry() != NULL) { m_chd = get_disk_handle(device().machine(), device().subtag(tempstring,"harddriv")); } else { err = m_origchd.open(*image_core_file(), true); if (err == CHDERR_NONE) { m_chd = &m_origchd; } else if (err == CHDERR_FILE_NOT_WRITEABLE) { err = m_origchd.open(*image_core_file(), false); if (err == CHDERR_NONE) { err = open_disk_diff(device().machine().options(), basename_noext(), m_origchd, m_diffchd); if (err == CHDERR_NONE) { m_chd = &m_diffchd; } } } } if (m_chd != NULL) { /* open the hard disk file */ m_hard_disk_handle = hard_disk_open(m_chd); if (m_hard_disk_handle != NULL) return IMAGE_INIT_PASS; } /* if we had an error, close out the CHD */ m_origchd.close(); m_diffchd.close(); m_chd = NULL; seterror(IMAGE_ERROR_UNSPECIFIED, chd_file::error_string(err)); return IMAGE_INIT_FAIL; }
/* imghd_close() Close MAME HD image */ void imghd_close(struct mess_hard_disk_file *disk) { if (disk->hard_disk) { hard_disk_close(disk->hard_disk); disk->hard_disk = nullptr; } if (disk->stream) { delete disk->stream; disk->stream = nullptr; } }
image_init_result harddisk_image_device::internal_load_hd() { chd_error err = CHDERR_NONE; m_chd = nullptr; if (m_hard_disk_handle) hard_disk_close(m_hard_disk_handle); /* open the CHD file */ if (software_entry() != nullptr) { m_chd = machine().rom_load().get_disk_handle(device().subtag("harddriv").c_str()); } else { err = m_origchd.open(image_core_file(), true); if (err == CHDERR_NONE) { m_chd = &m_origchd; } else if (err == CHDERR_FILE_NOT_WRITEABLE) { err = m_origchd.open(image_core_file(), false); if (err == CHDERR_NONE) { err = open_disk_diff(device().machine().options(), basename_noext(), m_origchd, m_diffchd); if (err == CHDERR_NONE) { m_chd = &m_diffchd; } } } } if (m_chd != nullptr) { /* open the hard disk file */ m_hard_disk_handle = hard_disk_open(m_chd); if (m_hard_disk_handle != nullptr) return image_init_result::PASS; } /* if we had an error, close out the CHD */ m_origchd.close(); m_diffchd.close(); m_chd = nullptr; seterror(IMAGE_ERROR_UNSPECIFIED, chd_file::error_string(err)); return image_init_result::FAIL; }
void harddisk_image_device::call_unload() { /* Check if there is an image_unload callback defined */ if ( !m_device_image_unload.isnull() ) { m_device_image_unload(*this); } if (m_hard_disk_handle != nullptr) { hard_disk_close(m_hard_disk_handle); m_hard_disk_handle = nullptr; } m_origchd.close(); m_diffchd.close(); m_chd = nullptr; }
void harddisk_image_device::call_unload() { /* Check if there is an image_unload callback defined */ if ( m_device_image_unload ) { m_device_image_unload(*this); } if (m_hard_disk_handle != NULL) { hard_disk_close(m_hard_disk_handle); m_hard_disk_handle = NULL; } m_origchd.close(); m_diffchd.close(); m_chd = NULL; }
/* imghd_close() Close MAME HD image */ void imghd_close(struct mess_hard_disk_file *disk) { chd_interface interface_save; chd_save_interface(&interface_save); chd_set_interface(&imgtool_chd_interface); if (disk->hard_disk) { hard_disk_close(disk->hard_disk); disk->hard_disk = NULL; } if (disk->chd) { chd_close(disk->chd); disk->chd = NULL; } chd_set_interface(&interface_save); }
void harddisk_image_device::device_stop() { if (m_hard_disk_handle) hard_disk_close(m_hard_disk_handle); }