aboutsummaryrefslogtreecommitdiff
path: root/Src/burnlib/eraseMedium.h
diff options
context:
space:
mode:
authorJean-Francois Mauguit <jfmauguit@mac.com>2024-09-24 09:03:25 -0400
committerGitHub <noreply@github.com>2024-09-24 09:03:25 -0400
commitbab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/burnlib/eraseMedium.h
parent4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff)
parent20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff)
downloadwinamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz
Merge pull request #5 from WinampDesktop/community
Merge to main
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