2025-04-27 07:49:33 -04:00

71 lines
1.0 KiB
C++

#ifndef _WORKER_H_
#define _WORKER_H_
class CWorker
{
public:
CWorker::CWorker(CModule *pModule):
m_pNotify(pModule->m_pCimNotify),
m_pModule(pModule),
m_pbStop(&pModule->m_bShouldExit),
m_pbPause(&pModule->m_bShouldPause)
{
m_wsParams=_wcsdup(pModule->m_bstrParams);
m_pNotify->AddRef();
m_pNotify->AddRef();
m_pModule->AddRef();
}
virtual ~CWorker()
{
delete []m_wsParams;
m_pNotify->Release();
m_pModule->Release();
}
virtual bool IsStopped()
{
return *m_pbStop==true;
}
virtual void StopModule()
{
*m_pbStop=true;
}
virtual bool IsPaused()
{
return *m_pbPause==true;
}
private:
bool *m_pbStop, *m_pbPause;
WCHAR *m_wsParams;
ICimNotify *m_pNotify;
CModule *m_pModule;
};
class CMyWorker : public CWorker
{
public:
CMyWorker(CModule *pModule);
~CMyWorker();
private:
static DWORD WINAPI ModWorkThread(void *pVoid);
HANDLE m_hThread;
DWORD m_dwTID;
};
#endif /*_WORKER_H_*/