Back

// PSLSoftware.h : Declaration of the CPSLSoftware

#pragma once
#include "resource.h"       // main symbols
#include "GUIDs.h"
#include "AutoObject.h"
#include "PSLExceptions.h"
#include "ProSysLib_i.h"

#include "PSLOS.h"
#include "PSLDrivers.h"
#include "PSLProcesses.h"
#include "PSLServices.h"
#include "PSLModuleVersion.h"

class ATL_NO_VTABLE CPSLSoftware :
   public CComObjectRootEx<CComMultiThreadModel>,
   public CComCoClass<CPSLSoftware, &CLSID_PSLSoftware>,
   public IDispatchImpl<IPSLSoftware, &IID_IPSLSoftware, &LIBID_ProSysLib, PSL_HiVersion, PSL_LoVersion>,
   public CPSLException<&CLSID_PSLSoftware, &IID_IPSLSoftware>
{
public:

   CPSLSoftware();

BEGIN_COM_MAP(CPSLSoftware)
   COM_INTERFACE_ENTRY(IPSLSoftware)
   COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()

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

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

   STDMETHOD(get_OS)(IPSLOS ** ppValue);
   STDMETHOD(get_Drivers)(IPSLDrivers ** ppValue);
   STDMETHOD(get_Processes)(IPSLProcesses ** ppValue);
   STDMETHOD(get_Services)(IPSLServices ** ppValue);
   STDMETHOD(GetModuleVersion)(BSTR ModulePath, IPSLModuleVersion ** ppValue);
   STDMETHOD(WindowFromHandle)(VARIANT Handle, IPSLWindow ** ppValue);
   STDMETHOD(ProcessIDFromThreadID)(long ThreadID, long * pValue);

private:

   CAutoObject<CPSLOS> m_OS;
   CAutoObject<CPSLDrivers> m_Drivers;
   CAutoObject<CPSLProcesses> m_Processes;
   CAutoObject<CPSLServices> m_Services;
};

Top