Back

// PSLModuleVersion.h : Declaration of the CPSLModuleVersion

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

#include "PSLVersionNumber.h"

class ATL_NO_VTABLE CPSLModuleVersion :
   public CComObjectRootEx<CComMultiThreadModel>,
   public CComCoClass<CPSLModuleVersion, &CLSID_PSLModuleVersion>,
   public IDispatchImpl<IPSLModuleVersion, &IID_IPSLModuleVersion, &LIBID_ProSysLib, PSL_HiVersion, PSL_LoVersion>,
   public CPSLException<&CLSID_PSLModuleVersion, &IID_IPSLModuleVersion>
{
public:

   CPSLModuleVersion();
   ~CPSLModuleVersion();

   void InitInternal(LPCTSTR strPath);
   bool InitExternal(LPCTSTR strPath);

BEGIN_COM_MAP(CPSLModuleVersion)
   COM_INTERFACE_ENTRY(IPSLModuleVersion)
   COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()

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

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

   STDMETHOD(get_IsValid)(VARIANT_BOOL * pValue);
   STDMETHOD(get_IsDebug)(VARIANT_BOOL * pValue);
   STDMETHOD(get_IsPatched)(VARIANT_BOOL * pValue);
   STDMETHOD(get_IsPreRelease)(VARIANT_BOOL * pValue);
   STDMETHOD(get_FileVersion)(IPSLVersionNumber ** ppValue);
   STDMETHOD(get_ProductVersion)(IPSLVersionNumber ** ppValue);

private:

   CComObject<CPSLVersionNumber> * m_pProductVersion;
   CComObject<CPSLVersionNumber> * m_pFileVersion;

   bool m_bValid;
   bool m_bDebug;
   bool m_bPatched;
   bool m_bPreRelease;

   bool m_bInitialized;
   LPBYTE m_pVersionBuffer;
};

Top