summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util/harddisk.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/util/harddisk.h')
-rw-r--r--src/lib/util/harddisk.h60
1 files changed, 33 insertions, 27 deletions
diff --git a/src/lib/util/harddisk.h b/src/lib/util/harddisk.h
index 2a4b727e7e7..f92c08edec5 100644
--- a/src/lib/util/harddisk.h
+++ b/src/lib/util/harddisk.h
@@ -8,45 +8,51 @@
***************************************************************************/
-#ifndef MAME_UTIL_HARDDISK_H
-#define MAME_UTIL_HARDDISK_H
+#ifndef MAME_LIB_UTIL_HARDDISK_H
+#define MAME_LIB_UTIL_HARDDISK_H
#pragma once
-#include "osdcore.h"
-#include "chd.h"
+#include "utilfwd.h"
+#include <cstdint>
+#include <system_error>
+#include <vector>
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-struct hard_disk_file;
+class chd_file;
-struct hard_disk_info
-{
- uint32_t cylinders;
- uint32_t heads;
- uint32_t sectors;
- uint32_t sectorbytes;
- uint32_t fileoffset; // offset in the file where the HDD image starts. not valid for CHDs.
-};
+class hard_disk_file {
+public:
+ struct info
+ {
+ uint32_t cylinders;
+ uint32_t heads;
+ uint32_t sectors;
+ uint32_t sectorbytes;
+ };
+ hard_disk_file(chd_file *chd);
+ hard_disk_file(util::random_read_write &corefile, uint32_t skipoffs);
+ ~hard_disk_file();
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
+ const info &get_info() const { return hdinfo; }
-hard_disk_file *hard_disk_open(chd_file *chd);
-hard_disk_file *hard_disk_open(util::core_file &corefile, uint32_t skipoffs);
+ bool set_block_size(uint32_t blocksize);
-void hard_disk_close(hard_disk_file *file);
+ bool read(uint32_t lbasector, void *buffer);
+ bool write(uint32_t lbasector, const void *buffer);
-chd_file *hard_disk_get_chd(hard_disk_file *file);
-hard_disk_info *hard_disk_get_info(hard_disk_file *file);
+ std::error_condition get_inquiry_data(std::vector<uint8_t> &data) const;
+ std::error_condition get_cis_data(std::vector<uint8_t> &data) const;
+ std::error_condition get_disk_key_data(std::vector<uint8_t> &data) const;
-uint32_t hard_disk_read(hard_disk_file *file, uint32_t lbasector, void *buffer);
-uint32_t hard_disk_write(hard_disk_file *file, uint32_t lbasector, const void *buffer);
+private:
+ chd_file * chd; // CHD file
+ util::random_read_write * fhandle; // file if not a CHD
+ info hdinfo; // hard disk info
+ uint32_t fileoffset; // offset in the file where the HDD image starts. not valid for CHDs.
+};
-#endif // MAME_UTIL_HARDDISK_H
+#endif // MAME_LIB_UTIL_HARDDISK_H