Back
// PSLProcess.h : Declaration of the CPSLProcess
#pragma once
#include "resource.h" // main symbols
#include "GUIDs.h"
#include "PSLExceptions.h"
#include "SystemInfoAccessor.h"
#include "ProSysLib_i.h"
class ATL_NO_VTABLE CPSLProcess :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CPSLProcess, &CLSID_PSLProcess>,
public IDispatchImpl<IPSLProcess, &IID_IPSLProcess, &LIBID_ProSysLib, PSL_HiVersion, PSL_LoVersion>,
public CPSLException<&CLSID_PSLProcess, &IID_IPSLProcess>
{
public:
CPSLProcess();
// Returns false, if the process was ignored;
bool Initialize(PSYSTEM_PROCESS_INFORMATION pProcess, LPCTSTR sUserName = NULL);
BEGIN_COM_MAP(CPSLProcess)
COM_INTERFACE_ENTRY(IPSLProcess)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct();
void FinalRelease();
////////////////////////////
// Interface Implementation:
////////////////////////////
STDMETHOD(get_ProcessID)(long * pValue);
STDMETHOD(get_ThreadCount)(long * pValue);
STDMETHOD(get_HandleCount)(long * pValue);
STDMETHOD(get_GDICount)(long * pValue);
STDMETHOD(get_USERCount)(long * pValue);
STDMETHOD(get_FileName)(BSTR * pValue);
STDMETHOD(get_FilePath)(BSTR * pValue);
STDMETHOD(get_CommandLine)(BSTR * pValue);
STDMETHOD(get_UserName)(BSTR * pValue);
STDMETHOD(get_DomainName)(BSTR * pValue);
STDMETHOD(get_Priority)(PSLProcessPriority * pValue);
STDMETHOD(get_AffinityMask)(VARIANT * pValue);
STDMETHOD(put_AffinityMask)(VARIANT newValue);
STDMETHOD(get_Is64Bit)(VARIANT_BOOL * pValue);
STDMETHOD(Kill)(VARIANT_BOOL * pValue);
private:
static _bstr_t FilePathFromProcessHandle(HANDLE hProcess);
static bool GetUserAndDomainFromSID(PSID pSid, tstring & sName, tstring & sDomain);
void Reset();
long m_ProcessID; // Process ID;
long m_ThreadCount; // Number of threads;
long m_HandleCount; // Number of open handles;
long m_GDICount;
long m_USERCount;
PSLProcessPriority m_Priority;
ABIG m_AffinityMask;
bool m_bIs64Bit;
_bstr_t m_sFileName;
_bstr_t m_sFilePath;
_bstr_t m_sCommandLine;
_bstr_t m_sUserName;
_bstr_t m_sDomainName;
};
Top |