Back

// PSLThread.h : Declaration of the CPSLThread

#pragma once
#include "resource.h"       // main symbols
#include "GUIDs.h"
#include "PSLExceptions.h"
#include "ProSysLib_i.h"
#include <tlhelp32.h>

class ATL_NO_VTABLE CPSLThread :
   public CComObjectRootEx<CComMultiThreadModel>,
   public CComCoClass<CPSLThread, &CLSID_PSLThread>,
   public IDispatchImpl<IPSLThread, &IID_IPSLThread, &LIBID_ProSysLib, PSL_HiVersion, PSL_LoVersion>,
   public CPSLException<&CLSID_PSLService, &IID_IPSLService>
{
public:

   CPSLThread();

   void Initialize(THREADENTRY32 * pInfo);

BEGIN_COM_MAP(CPSLThread)
   COM_INTERFACE_ENTRY(IPSLThread)
   COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()

   DECLARE_PROTECT_FINAL_CONSTRUCT()
   HRESULT FinalConstruct();
   void FinalRelease();

////////////////////////////
// Interface Implementation:
////////////////////////////

   STDMETHOD(get_ThreadID)(long * pValue);
   STDMETHOD(get_Priority)(PSLThreadPriority * pValue);
   STDMETHOD(put_Priority)(PSLThreadPriority newValue);
   STDMETHOD(get_PriorityBoost)(VARIANT_BOOL * pValue);
   STDMETHOD(put_PriorityBoost)(VARIANT_BOOL newValue);
   STDMETHOD(get_AffinityMask)(VARIANT * pValue);
   STDMETHOD(put_AffinityMask)(VARIANT newValue);
   STDMETHOD(get_IsCurrent)(VARIANT_BOOL * pValue);
   STDMETHOD(get_IsAlive)(VARIANT_BOOL * pValue);
   STDMETHOD(get_Created)(DATE * pValue);
   STDMETHOD(PostMsg)(long Msg, VARIANT wParam, VARIANT lParam, VARIANT_BOOL * pValue);
   STDMETHOD(Wait)(long TimeOut, VARIANT_BOOL * pValue);
   STDMETHOD(Terminate)(long ExitCode, VARIANT_BOOL * pValue);
   STDMETHOD(Suspend)(long * pValue);
   STDMETHOD(Resume)(long * pValue);

private:

   DATE m_Created;
   long m_ThreadID;
};

Top