123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #pragma once
- #ifdef DRIVERAPI_EXPORTS
- #define DRIVERAPI_API __declspec(dllexport)
- #else
- #define DRIVERAPI_API __declspec(dllimport)
- #endif
- class DRIVERAPI_API Thread_Base
- {
- protected:
- DWORD m_ThreadID;
- HANDLE m_Base_Thread;
- HANDLE m_ExitFlag;
- HANDLE m_WorkFlag;
- virtual bool Exec() = 0;
- virtual bool OnStartThread();
- virtual bool OnEndThread();
- public:
- Thread_Base(void);
- virtual ~Thread_Base(void);
- bool StartThread();
- bool StopThread();
- INT WaitTheIncommingEvent(DWORD waittime);
- bool WaitTheThreadEnd(DWORD waittime);
- bool WaitTheThreadEndSign(DWORD waittime);//for Exec Only
- void NotifyThreadWork();
- DWORD GetTID();
- private:
- static DWORD WINAPI Thread_Base_Thread(LPVOID pPara);
- };
- #define WAITROUTINE(x) { INT ret = WaitTheIncommingEvent(x); if(ret == 0) return false; if(ret == -1) return true;}
- #define WAIT(p, time) if(p->WaitTheThreadEndSign(time))
- #define WAITRETURN(p, time, ret) if(p->WaitTheThreadEndSign(time)) return ret
- #define WAITRETURNVOID(p, time) if(p->WaitTheThreadEndSign(time)) return
|