Back

// PSLOS.h : Declaration of the CPSLOS

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

#include "PSLOSVersion.h"
#include "PSLMemory.h"

class ATL_NO_VTABLE CPSLOS :
   public CComObjectRootEx<CComMultiThreadModel>,
   public CComCoClass<CPSLOS, &CLSID_PSLOS>,
   public IDispatchImpl<IPSLOS, &IID_IPSLOS, &LIBID_ProSysLib, PSL_HiVersion, PSL_LoVersion>,
   public CPSLException<&CLSID_PSLOS, &IID_IPSLOS>
{
public:

   CPSLOS();

BEGIN_COM_MAP(CPSLOS)
   COM_INTERFACE_ENTRY(IPSLOS)
   COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()

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

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

   STDMETHOD(get_Is64Bit)(VARIANT_BOOL * pValue);
   STDMETHOD(get_Version)(IPSLOSVersion ** ppValue);
   STDMETHOD(get_AffinityMask)(VARIANT * pValue);
   STDMETHOD(get_ProductName)(BSTR * pValue);
   STDMETHOD(get_ProductId)(BSTR * pValue);
   STDMETHOD(get_Memory)(IPSLMemory ** ppValue);
   STDMETHOD(GetSpecialFolder)(PSLSpecialFolder Folder, BSTR * pValue);

private:

   bool m_bIs64Bit;

   _bstr_t m_sProductName;
   _bstr_t m_sProductId;

   CAutoObject<CPSLOSVersion> m_Version;
   CAutoObject<CPSLMemory> m_Memory;
};

Top