aboutsummaryrefslogtreecommitdiff
path: root/Src/burnlib/eraseMedium.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/burnlib/eraseMedium.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/burnlib/eraseMedium.h')
-rw-r--r--Src/burnlib/eraseMedium.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/Src/burnlib/eraseMedium.h b/Src/burnlib/eraseMedium.h
new file mode 100644
index 00000000..ffd8cede
--- /dev/null
+++ b/Src/burnlib/eraseMedium.h
@@ -0,0 +1,68 @@
+#ifndef NULLSOFT_ERASEMEDIUM_HEADER
+#define NULLSOFT_ERASEMEDIUM_HEADER
+
+#include "./main.h"
+#include "./primosdk.h"
+
+#define ERASEMEDIUM_STATUS 0x0000
+#define ERASEMEDIUM_ERROR 0x1000
+
+// status messages
+#define ERASEMEDIUM_READY ((ERASEMEDIUM_STATUS) + 0x0001)
+#define ERASEMEDIUM_INITIALIZING ((ERASEMEDIUM_STATUS) + 0x0002)
+#define ERASEMEDIUM_ERASING ((ERASEMEDIUM_STATUS) + 0x0003)
+#define ERASEMEDIUM_FINISHING ((ERASEMEDIUM_STATUS) + 0x0004)
+#define ERASEMEDIUM_CANCELING ((ERASEMEDIUM_STATUS) + 0x0005)
+#define ERASEMEDIUM_COMPLETED ((ERASEMEDIUM_STATUS) + 0x0006)
+#define ERASEMEDIUM_ABORTED ((ERASEMEDIUM_STATUS) + 0x0007)
+
+
+// error messages
+#define ERASEMEDIUM_ALREADYSTARTED ((ERASEMEDIUM_ERROR) + 0x0001)
+#define ERASEMEDIUM_UNABLEINITPRIMO ((ERASEMEDIUM_ERROR) + 0x0002)
+#define ERASEMEDIUM_DEVICENOTREADY ((ERASEMEDIUM_ERROR) + 0x0003)
+#define ERASEMEDIUM_DISCINFOERROR ((ERASEMEDIUM_ERROR) + 0x0004)
+#define ERASEMEDIUM_DISCNOTERASABLE ((ERASEMEDIUM_ERROR) + 0x0005)
+#define ERASEMEDIUM_BEGINBURNFAILED ((ERASEMEDIUM_ERROR) + 0x0006)
+#define ERASEMEDIUM_ENDBURNFAILED ((ERASEMEDIUM_ERROR) + 0x0007)
+#define ERASEMEDIUM_ERASEMEDIUMFAILED ((ERASEMEDIUM_ERROR) + 0x0008)
+
+// callback returns
+#define ERASEMEDIUM_CONTINUE 0
+#define ERASEMEDIUM_STOP 1
+
+
+typedef DWORD (WINAPI *ERASEMEDIUMCALLBACK)(void*, void*, DWORD, DWORD);
+
+class EraseMedium
+{
+public:
+ BURNLIB_API EraseMedium(void);
+ BURNLIB_API ~EraseMedium(void);
+
+public:
+ BURNLIB_API DWORD Start(DWORD drive, DWORD eraseMode, ERASEMEDIUMCALLBACK notifyCB, void *userParam, int block);
+ BURNLIB_API void Stop(void);
+ BURNLIB_API DWORD GetErrorCode(void) { return errorCode; }
+ BURNLIB_API BOOL IsRunning(void) { return (NULL != hThread); }
+
+public:
+ BURNLIB_API DWORD SetEject(DWORD eject);
+protected:
+ DWORD OnNotify(DWORD eraseCode, DWORD primoCode);
+ static DWORD WINAPI StatusThread(void* parameter);
+
+protected:
+ WABURNSTRUCT bs;
+ obj_primo *primoSDK;
+ unsigned int eject;
+ HANDLE hThread;
+ HANDLE evntStop;
+ HANDLE evntThreadExit;
+ DWORD errorCode;
+ void* userparam;
+
+ ERASEMEDIUMCALLBACK notifyCB;
+};
+
+#endif //NULLSOFT_ERASEMEDIUM_HEADER