|
// Process.h : Declaration of the CProcess
#pragma once
#ifdef STANDARDSHELL_UI_MODEL
#include "resource.h"
#endif
#ifdef POCKETPC2003_UI_MODEL
#include "resourceppc.h"
#endif
#ifdef SMARTPHONE2003_UI_MODEL
#include "resourcesp.h"
#endif
#ifdef AYGSHELL_UI_MODEL
#include "resourceayg.h"
#endif
#include <comutil.h>
#include "ToolBox.h"
#include "Windows\AutoCriticalSection.h"
#define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA
#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
#error "Single-threaded COM objects are not properly supported on Windows CE platform, such as the Windows Mobile platforms that do not include full DCOM support. Define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA to force ATL to support creating single-thread COM object's and allow use of it's single-threaded COM object implementations. The threading model in your rgs file was set to 'Free' as that is the only threading model supported in non DCOM Windows CE platforms."
#endif
// CProcess
class ATL_NO_VTABLE CProcess :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CProcess, &CLSID_Process>,
public ISupportErrorInfo,
public IDispatchImpl<IProcess, &IID_IProcess, &LIBID_ToolBoxLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
CProcess();
#ifndef _CE_DCOM
DECLARE_REGISTRY_RESOURCEID(IDR_PROCESS)
#endif
#ifdef _CE_DCOM
DECLARE_REGISTRY_RESOURCEID(IDR_PROCESSDCOM)
#endif
BEGIN_COM_MAP(CProcess)
COM_INTERFACE_ENTRY(IProcess)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
//DECLARE_CLASSFACTORY_SINGLETON(CProcess)
HRESULT FinalConstruct();
void FinalRelease();
public:
// COM
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// IProcess
STDMETHOD(get_Name)(/*[out, retval]*/ BSTR *value);
STDMETHOD(get_Pid)(/*[out, retval]*/ LONG *value);
STDMETHOD(get_ThreadCount)(/*[out, retval]*/ LONG *value);
STDMETHOD(get_BaseAddress)(/*[out, retval]*/ LONG *value);
STDMETHOD(get_HeapSize)(/*[out, retval]*/ LONG *value);
STDMETHOD(get_VirtualMemory)(/*[out, retval]*/ LONG *value);
STDMETHOD(get_VirtualMemoryCommitted)(/*[out, retval]*/ LONG *value);
STDMETHOD(get_VirtualMemoryReserved)(/*[out, retval]*/ LONG *value);
STDMETHOD(get_DllCount)(/*[out, retval]*/ LONG *value);
// C++
void Init(_bstr_t name, long pid,
long threadCount,
long baseAddress,
long heapSize,
long virtualMemory,
long virtualMemoryCommitted,
long virtualMemoryReserved,
long dll);
private:
Windows::CriticalSection m_lock;
_bstr_t m_name;
long m_pid;
long m_threadCount;
long m_baseAddress;
long m_heapSize;
long m_virtualMemory;
long m_virtualMemoryCommitted;
long m_virtualMemoryReserved;
long m_dll;
};
OBJECT_ENTRY_AUTO(__uuidof(Process), CProcess)
|
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.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.