diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/burnlib/eraseMedium.h | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/burnlib/eraseMedium.h')
-rw-r--r-- | Src/burnlib/eraseMedium.h | 68 |
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 |