worker.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 2k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. // worker.h : Declaration of the CWorkerThread
  2. #ifndef __WORKER_H_
  3. #define __WORKER_H_
  4. #include "iface.h"          // for IWorkerEvent
  5. // CWorkerThread
  6. class CWorkerThread : public IARPWorker
  7. {
  8. public:
  9.     CWorkerThread();
  10.     virtual ~CWorkerThread();
  11.     
  12.     // *** IUnknown ***
  13.     virtual STDMETHODIMP_(ULONG) AddRef   (void);
  14.     virtual STDMETHODIMP_(ULONG) Release  (void);
  15.     virtual STDMETHODIMP QueryInterface   (REFIID riid, LPVOID * ppvObj);
  16.     // *** IARPWorker ***
  17.     virtual STDMETHODIMP KillWT (void);
  18.     STDMETHOD(StartWT)          (int iPriority);
  19.     STDMETHOD(SetListenerWT)    (IWorkerEvent * pwe);
  20.     
  21.     BOOL    IsKilled() { return _fKillWorker; };
  22.     BOOL    PostWorkerMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
  23.     
  24.     virtual DWORD   _ThreadStartProc();
  25. protected:
  26.     DWORD   _dwThreadId;
  27. private:
  28.     void    _LockWorker(void);
  29.     void    _UnlockWorker(void);
  30.     LONG    _cRef;
  31.     
  32.     CRITICAL_SECTION _csWorker;
  33.     DEBUG_CODE( LONG _cRefLockWorker; )
  34.     
  35.     LONG    _cItems;
  36.     IWorkerEvent * _pwe;
  37.     
  38.     BITBOOL _fKillWorker: 1;
  39.     HANDLE  _hthreadWorker;
  40.     HWND    _hwndWorker;
  41.     LRESULT _WorkerWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  42.     
  43.     static DWORD CALLBACK _ThreadStartProcWrapper(LPVOID lpParam);
  44.     static LRESULT CALLBACK _WorkerWndProcWrapper(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  45. };
  46. // Window messages from worker thread that cause actions on the main thread
  47. #define WORKERWIN_FIRE_ROW_READY          (WM_USER + 0x0101)  // wParam is row #
  48. #define WORKERWIN_FIRE_FINISHED           (WM_USER + 0X0102)
  49. #define WORKERWIN_FIRE_DATASETCHANGED     (WM_USER + 0X0103)
  50. #endif //__WORKER_H_