|
// PSLProcesses.h : Declaration of the CPSLProcesses
#pragma once
#include "resource.h" // main symbols
#include "GUIDs.h"
#include "PSLExceptions.h"
#include "ProSysLib_i.h"
DECLARE_PSL_COLLECTION(Processes, Process);
class ATL_NO_VTABLE CPSLProcesses:
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CPSLProcesses, &CLSID_PSLProcesses>,
public CProcessesCollection,
public CPSLException<&CLSID_PSLProcesses, &IID_IPSLProcesses>
{
public:
CPSLProcesses();
~CPSLProcesses();
static bool Is64BitProcess(HANDLE hProcess);
BEGIN_COM_MAP(CPSLProcesses)
COM_INTERFACE_ENTRY(IPSLProcesses)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct();
void FinalRelease();
////////////////////////////
// Interface Implementation:
////////////////////////////
STDMETHOD(get_EnumUserType)(PSLEnumUserType * pValue);
STDMETHOD(put_EnumUserType)(PSLEnumUserType newValue);
STDMETHOD(Find)(long ProcessID, IPSLProcess ** ppValue);
STDMETHOD(Update)();
protected:
virtual HRESULT OnIndexOutOfRange();
virtual HRESULT OnInterfaceAccess();
private:
typedef BOOL (WINAPI * IsWow64ProcessProc)(HANDLE hProcess, PBOOL Wow64Process);
static IsWow64ProcessProc m_IsWow64Process;
static HMODULE m_hKernelModule;
PSLEnumUserType m_EnumType;
_bstr_t m_sUserName; // Current User Name;
bool m_bDirty; // When set, means that either there's no data or data
// is out of date and needs to be updated;
static ULONG m_BufferSize; // Default buffer size when querying for processes;
void InternalUpdate(bool bForceUpdate);
};
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.