977 lines
37 KiB
C
977 lines
37 KiB
C
|
/*======================================================================================//
|
||
|
| Process Control //
|
||
|
| //
|
||
|
|Copyright (c) 1998 Sequent Computer Systems, Incorporated. All rights reserved. //
|
||
|
| //
|
||
|
|File Name: BaseNode.h //
|
||
|
| //
|
||
|
|Description: Class definitions for all container nodes //
|
||
|
| //
|
||
|
|Created: Paul Skoglund 07-1998 //
|
||
|
| //
|
||
|
|Rev History: //
|
||
|
| //
|
||
|
|=======================================================================================*/
|
||
|
|
||
|
|
||
|
#ifndef _CLASS_BASENODE_
|
||
|
#define _CLASS_BASENODE_
|
||
|
|
||
|
#include "resource.h"
|
||
|
#include "HelpTopics.h"
|
||
|
#include "DataObj.h"
|
||
|
|
||
|
#pragma warning(push)
|
||
|
#include <string>
|
||
|
#pragma warning(pop)
|
||
|
#pragma warning(push)
|
||
|
#pragma warning(4 : 4284)
|
||
|
#include <list>
|
||
|
#pragma warning(pop)
|
||
|
|
||
|
using std::basic_string;
|
||
|
using std::list;
|
||
|
|
||
|
typedef basic_string<TCHAR> tstring;
|
||
|
|
||
|
typedef struct _CONTEXTMENUITEMBYID
|
||
|
{
|
||
|
int strNameID;
|
||
|
int strStatusBarTextID;
|
||
|
LONG lCommandID;
|
||
|
LONG lInsertionPointID;
|
||
|
} CONTEXTMENUITEMBYID;
|
||
|
|
||
|
typedef enum tagNODETYPE {
|
||
|
UNINIZALIZED_NODE = 0x00L,
|
||
|
ROOT_NODE = 0x01L,
|
||
|
MANAGEMENTRULE_NODE = 0x02L,
|
||
|
NAMERULE_NODE = 0x04L,
|
||
|
PROCESSRULE_NODE = 0x08L,
|
||
|
JOBRULE_NODE = 0x10L,
|
||
|
PROCESS_NODE = 0x20L,
|
||
|
JOB_NODE = 0x40L,
|
||
|
JOBITEM_NODE = 0x80L,
|
||
|
} NODETYPE;
|
||
|
|
||
|
typedef enum _PC_VIEW_UPDATE_HINT
|
||
|
{
|
||
|
PC_VIEW_UPDATEALL = 0x1, // cache has been invalidated
|
||
|
PC_VIEW_SETITEM = 0x2, // cache is valid, set single item
|
||
|
PC_VIEW_UPDATEITEM = 0x4, // cache is valid, update single item
|
||
|
PC_VIEW_ADDITEM = 0x8, // cache is valid, add single item
|
||
|
PC_VIEW_DELETEITEM = 0x10, // cache is valid, remove single item
|
||
|
PC_VIEW_REDRAWALL = 0x11, // cache is valid, redraw all items
|
||
|
} PC_VIEW_UPDATE_HINT;
|
||
|
|
||
|
const int PROCESS_ALIAS_COLUMN_WIDTH = 140;
|
||
|
const int DESCRIPTION_COLUMN_WIDTH = 200;
|
||
|
const int MATCH_COLUMN_WIDTH = 200;
|
||
|
const int TYPE_COLUMN_WIDTH = 110;
|
||
|
const int NAME_COLUMN_WIDTH = 225;
|
||
|
const int APPLY_JOB_COLUMN_WIDTH = 155;
|
||
|
const int JOB_COLUMN_WIDTH = 140;
|
||
|
const int APPLY_AFFINITY_COLUMN_WIDTH = 95;
|
||
|
const int AFFINITY_COLUMN_WIDTH = 130;
|
||
|
const int APPLY_PRIORITY_COLUMN_WIDTH = 100;
|
||
|
const int PRIORITY_COLUMN_WIDTH = 95;
|
||
|
const int APPLY_SCHEDULING_CLASS_COLUMN_WIDTH = 150;
|
||
|
const int SCHEDULING_CLASS_COLUMN_WIDTH = 120;
|
||
|
const int IMAGE_NAME_COLUMN_WIDTH = 120;
|
||
|
const int PID_COLUMN_WIDTH = 50;
|
||
|
const int ACTIVE_PROCESS_COUNT_COLUMN_WIDTH = 115;
|
||
|
const int STATUS_COLUMN_WIDTH = 65;
|
||
|
const int JOB_OWNER_COLUMN_WIDTH = 105;
|
||
|
const int APPLY_MINMAXWS_COLUMN_WIDTH = 100;
|
||
|
const int MINWS_COLUMN_WIDTH = 115;
|
||
|
const int MAXWS_COLUMN_WIDTH = 115;
|
||
|
const int APPLY_PROC_CMEM_LIMIT_COLUMN_WIDTH = 200;
|
||
|
const int PROC_CMEM_LIMIT_COLUMN_WIDTH = 195;
|
||
|
const int APPLY_JOB_CMEM_LIMIT_COLUMN_WIDTH = 195;
|
||
|
const int JOB_CMEM_LIMIT_COLUMN_WIDTH = 185;
|
||
|
const int APPLY_PROCCOUNT_LIMIT_COLUMN_WIDTH = 160;
|
||
|
const int PROCCOUNT_LIMIT_COLUMN_WIDTH = 120;
|
||
|
const int APPLY_PROC_CPUTIME_LIMIT_COLUMN_WIDTH=170;
|
||
|
const int PROC_CPUTIME_LIMIT_COLUMN_WIDTH = 150;
|
||
|
const int APPLY_JOB_CPUTIME_LIMIT_COLUMN_WIDTH= 150;
|
||
|
const int JOB_CPUTIME_LIMIT_COLUMN_WIDTH = 150;
|
||
|
const int ACTION_JOB_CPUTIME_LIMIT_COLUMN_WIDTH=165;
|
||
|
const int ENDJOB_ON_NO_PROC_COLUMN_WIDTH = 180;
|
||
|
const int DIE_ON_UNHANDLED_EXCEPT_COLUMN_WIDTH= 150;
|
||
|
const int ALLOW_BREAKAWAY_COLUMN_WIDTH = 150;
|
||
|
const int ALLOW_SILENT_BREAKAWAY_COLUMN_WIDTH = 165;
|
||
|
|
||
|
const int USER_TIME_COLUMN_WIDTH = 105;
|
||
|
const int KERNEL_TIME_COLUMN_WIDTH = 105;
|
||
|
const int CREATE_TIME_COLUMN_WIDTH = 130;
|
||
|
|
||
|
const int PERIOD_USER_TIME_COLUMN_WIDTH = 130;
|
||
|
const int PERIOD_KERNEL_TIME_COLUMN_WIDTH = 140;
|
||
|
const int PAGE_FAULT_COUNT_COLUMN_WIDTH = 100;
|
||
|
const int PROCESS_COUNT_COLUMN_WIDTH = 110;
|
||
|
const int TERMINATED_PROCESS_COUNT_COLUMN_WIDTH=140;
|
||
|
const int READOP_COUNT_COLUMN_WIDTH = 120;
|
||
|
const int WRITEOP_COUNT_COLUMN_WIDTH = 120;
|
||
|
const int OTHEROP_COUNT_COLUMN_WIDTH = 120;
|
||
|
const int READTRANS_COUNT_COLUMN_WIDTH = 140;
|
||
|
const int WRITETRANS_COUNT_COLUMN_WIDTH = 140;
|
||
|
const int OTHERTRANS_COUNT_COLUMN_WIDTH = 140;
|
||
|
const int PEAK_PROC_MEM_COLUMN_WIDTH = 160;
|
||
|
const int PEAK_JOB_MEM_COLUMN_WIDTH = 150;
|
||
|
|
||
|
// Scope node image numbers
|
||
|
const int PROCCON_SNAPIN_IMAGE = 0;
|
||
|
const int PROCCON_SNAPIN_OPENIMAGE = 0;
|
||
|
const int RULES_IMAGE = 1;
|
||
|
const int RULES_OPENIMAGE = 1;
|
||
|
const int ALIASRULES_IMAGE = 2;
|
||
|
const int ALIASRULES_OPENIMAGE = 2;
|
||
|
const int PROCRULES_IMAGE = 3;
|
||
|
const int PROCRULES_OPENIMAGE = 3;
|
||
|
const int JOBRULES_IMAGE = 4;
|
||
|
const int JOBRULES_OPENIMAGE = 4;
|
||
|
const int PROCESSES_IMAGE = 5;
|
||
|
const int PROCESSES_OPENIMAGE = 5;
|
||
|
const int JOBS_IMAGE = 6;
|
||
|
const int JOBS_OPENIMAGE = 6;
|
||
|
const int ITEMIMAGE_ERROR = 11;
|
||
|
const int EMPTY_IMAGE = 12;
|
||
|
|
||
|
const int PROCESSRULEITEMIMAGE = PROCRULES_IMAGE;
|
||
|
const int JOBRULEITEMIMAGE = JOBRULES_IMAGE;
|
||
|
|
||
|
const int PROCITEMIMAGE = 7;
|
||
|
const int PROCITEMIMAGE_NODEFINITION = EMPTY_IMAGE; // 8;
|
||
|
|
||
|
const int JOBITEMIMAGE = 9;
|
||
|
const int JOBITEMIMAGE_NODEFINITION = 10;
|
||
|
const int JOBIMAGE_NODEFINITION = 10;
|
||
|
|
||
|
const int FOLDER = 13;
|
||
|
const int OPEN_FOLDER = 14;
|
||
|
|
||
|
|
||
|
HRESULT InsertProcessHeaders(IHeaderCtrl2* ipHeaderCtrl);
|
||
|
HRESULT PCProcListGetDisplayInfo(RESULTDATAITEM &ResultItem, const PCProcListItem &ref, ITEM_STR &StorageStr);
|
||
|
|
||
|
|
||
|
class CBaseNode
|
||
|
{
|
||
|
private:
|
||
|
CBaseNode();
|
||
|
|
||
|
public:
|
||
|
CBaseNode(NODETYPE nNodeType, CBaseNode *pParent = NULL ) :
|
||
|
m_NodeType(nNodeType), m_pParent(pParent), nUpdateCtr(0), m_refcount(1)
|
||
|
{
|
||
|
}
|
||
|
virtual ~CBaseNode() { ATLTRACE(_T("~CBaseNode\n"));}
|
||
|
|
||
|
void AddRef()
|
||
|
{
|
||
|
++m_refcount;
|
||
|
}
|
||
|
void Release()
|
||
|
{
|
||
|
if (--m_refcount == 0)
|
||
|
delete this;
|
||
|
}
|
||
|
|
||
|
virtual LPCTSTR GetNodeName() = 0;
|
||
|
virtual HRESULT GetDisplayInfo(RESULTDATAITEM &ResultItem) = 0;
|
||
|
|
||
|
virtual const GUID *GetGUIDptr() = 0;
|
||
|
virtual const TCHAR *GetGUIDsz() = 0;
|
||
|
virtual BOOL IsPersisted() = 0; // support for CCF_SNODEID, and CCF_SNODEID2 formats
|
||
|
virtual BOOL GetPreload() { return FALSE; } // support for CCF_SNAPIN_PRELOADS format
|
||
|
|
||
|
|
||
|
virtual const int sImage() = 0;
|
||
|
virtual const int sOpenImage() = 0;
|
||
|
|
||
|
virtual void SetID(HSCOPEITEM ID) = 0;
|
||
|
virtual HSCOPEITEM GetID() = 0;
|
||
|
virtual int GetChildrenCount() { return 0; }
|
||
|
|
||
|
virtual CBaseNode* GetParentNode() { return m_pParent; }
|
||
|
|
||
|
virtual const TCHAR *GetWindowTitle() // support for CCF_WINDOW_TITLE format
|
||
|
{
|
||
|
if ( !GetParentNode() )
|
||
|
{
|
||
|
ASSERT(FALSE); // the parent node must override this function and provide the handle!
|
||
|
return _T("");
|
||
|
}
|
||
|
|
||
|
CBaseNode *pParent = GetParentNode();
|
||
|
while (pParent->GetParentNode())
|
||
|
pParent = pParent->GetParentNode();
|
||
|
|
||
|
return pParent->GetNodeName();
|
||
|
}
|
||
|
|
||
|
virtual void GetComputerConnectionInfo(COMPUTER_CONNECTION_INFO &out)
|
||
|
{
|
||
|
if ( !GetParentNode() )
|
||
|
{
|
||
|
out.bLocalComputer = FALSE;
|
||
|
memcpy(out.RemoteComputer, 0, sizeof(out.RemoteComputer));
|
||
|
ASSERT(FALSE); // the parent node must override this function and provide the handle!
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
CBaseNode *pParent = GetParentNode();
|
||
|
while (pParent->GetParentNode())
|
||
|
pParent = pParent->GetParentNode();
|
||
|
|
||
|
pParent->GetComputerConnectionInfo(out);
|
||
|
}
|
||
|
|
||
|
virtual const PCid GetPCid()
|
||
|
{
|
||
|
if ( !GetParentNode() )
|
||
|
{
|
||
|
ASSERT(FALSE); // the parent node must override this function and provide the handle!
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
CBaseNode *pParent = GetParentNode();
|
||
|
while (pParent->GetParentNode())
|
||
|
pParent = pParent->GetParentNode();
|
||
|
|
||
|
return pParent->GetPCid();
|
||
|
}
|
||
|
|
||
|
virtual BOOL ReportPCError(PCULONG32 nLastError)
|
||
|
{
|
||
|
if ( !GetParentNode() )
|
||
|
{
|
||
|
ASSERT(FALSE); // the parent node must override this function and provide the handle!
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
CBaseNode *pParent = GetParentNode();
|
||
|
while (pParent->GetParentNode())
|
||
|
pParent = pParent->GetParentNode();
|
||
|
|
||
|
return pParent->ReportPCError(nLastError);
|
||
|
}
|
||
|
|
||
|
|
||
|
virtual BOOL ReportPCError()
|
||
|
{
|
||
|
if ( !GetParentNode() )
|
||
|
{
|
||
|
ASSERT(FALSE); // the parent node must override this function and provide the handle!
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
CBaseNode *pParent = GetParentNode();
|
||
|
while (pParent->GetParentNode())
|
||
|
pParent = pParent->GetParentNode();
|
||
|
|
||
|
return pParent->ReportPCError();
|
||
|
}
|
||
|
|
||
|
virtual PCULONG32 GetLastPCError()
|
||
|
{
|
||
|
if ( !GetParentNode() )
|
||
|
{
|
||
|
ASSERT(FALSE); // the parent node must override this function and provide the handle!
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
CBaseNode *pParent = GetParentNode();
|
||
|
while (pParent->GetParentNode())
|
||
|
pParent = pParent->GetParentNode();
|
||
|
|
||
|
return pParent->GetLastPCError();
|
||
|
}
|
||
|
|
||
|
//IComponentData::Notify
|
||
|
virtual HRESULT OnExpand(BOOL bExpand, HSCOPEITEM hItem, IConsoleNameSpace2 *ipConsoleNameSpace2) { return S_OK; } // return value not used
|
||
|
virtual HRESULT OnRename(LPOLESTR pszNewName) { return S_FALSE; } // rename not allowed
|
||
|
virtual HRESULT OnRemoveChildren(HSCOPEITEM hID) { return S_OK; } // return value not used
|
||
|
|
||
|
//IComponent::Notify
|
||
|
virtual HRESULT OnShow(BOOL bSelecting, HSCOPEITEM hItem, IHeaderCtrl2* ipHeaderCtrl, IConsole2 *ipConsole2) { ASSERT(hItem == GetID()); return S_OK; } // return value used
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb) { return S_OK; } // return value not used
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb, LPARAM Cookie) { return S_OK; } // return value not used
|
||
|
virtual HRESULT OnDelete (IConsole2 *ipConsole2, LPARAM Cookie) { return S_FALSE; } // return value not used
|
||
|
virtual HRESULT OnDblClick(IConsole2 *ipConsole2, LPARAM Cookie) { return S_FALSE; } // return S_FALSE to get default verb
|
||
|
virtual HRESULT OnHelpCmd(IDisplayHelp *ipDisplayHelp) { return S_FALSE; } // return value not used
|
||
|
virtual HRESULT OnRefresh(IConsole2 *ipConsole2) { return S_FALSE; } // return value not used
|
||
|
|
||
|
virtual HRESULT OnViewChange(IResultData *ipResultData, LPARAM data, LONG_PTR hint) { return S_OK; }
|
||
|
|
||
|
#ifdef USE_IRESULTDATACOMPARE
|
||
|
//IResultDataCompare
|
||
|
virtual HRESULT ResultDataCompare(LPARAM lUserParam, MMC_COOKIE cookieA, MMC_COOKIE cookieB, int * pnResult ) { return E_UNEXPECTED; }
|
||
|
#endif
|
||
|
|
||
|
//IExtendContextMenu::Command
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed) { return S_OK; }
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed, LPARAM Cookie) { return S_OK; }
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID) { return E_UNEXPECTED; }
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID, LPARAM Cookie) { return E_UNEXPECTED; }
|
||
|
|
||
|
//IExtendPropertySheet2
|
||
|
virtual HRESULT OnCreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, DATA_OBJECT_TYPES context) { return S_FALSE; }
|
||
|
virtual HRESULT OnCreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, DATA_OBJECT_TYPES context, LPARAM Cookie) { return S_FALSE; }
|
||
|
virtual HRESULT QueryPagesFor() { return S_FALSE; }
|
||
|
virtual HRESULT QueryPagesFor(LPARAM Cookie) { return S_FALSE; }
|
||
|
// GetWatermarks handled at "global" level in CComponent, CComponentData
|
||
|
|
||
|
virtual HRESULT SendViewChange(IConsole2 *ipConsole2, LPARAM ResultCookie, PC_VIEW_UPDATE_HINT hint)
|
||
|
{
|
||
|
ASSERT(ipConsole2);
|
||
|
if (!ipConsole2)
|
||
|
return E_UNEXPECTED;
|
||
|
|
||
|
ASSERT( ((hint == PC_VIEW_UPDATEALL || hint == PC_VIEW_REDRAWALL) && !ResultCookie) ||
|
||
|
((hint != PC_VIEW_UPDATEALL && hint != PC_VIEW_REDRAWALL) && ResultCookie) );
|
||
|
|
||
|
LPDATAOBJECT ipDataObject = NULL;
|
||
|
CComObject<CDataObject>* pDataObj;
|
||
|
CComObject<CDataObject>::CreateInstance( &pDataObj );
|
||
|
if( ! pDataObj ) // DataObject was not created
|
||
|
{
|
||
|
ASSERT(pDataObj);
|
||
|
return E_OUTOFMEMORY;
|
||
|
}
|
||
|
|
||
|
pDataObj->SetDataObject( CCT_RESULT, this );
|
||
|
|
||
|
HRESULT hr = pDataObj->QueryInterface( IID_IDataObject, (void **)&ipDataObject);
|
||
|
|
||
|
if (hr == S_OK)
|
||
|
hr = ipConsole2->UpdateAllViews(ipDataObject, ResultCookie, hint);
|
||
|
|
||
|
ipDataObject->Release();
|
||
|
|
||
|
ASSERT(hr == S_OK);
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
virtual HRESULT OnPropertyChange(PROPERTY_CHANGE_HDR *pUpdate, IConsole2 *ipConsole2)
|
||
|
{
|
||
|
ATLTRACE(_T("Unhandled OnPropertyChange for %s.\n"), GetNodeName());
|
||
|
return E_UNEXPECTED;
|
||
|
}
|
||
|
|
||
|
virtual const NODETYPE GetNodeType() { return m_NodeType; } // should try and remove the need for this...
|
||
|
|
||
|
private:
|
||
|
NODETYPE m_NodeType; // Describes the node type
|
||
|
CBaseNode *m_pParent;
|
||
|
int m_refcount;
|
||
|
|
||
|
protected:
|
||
|
PCINT32 nUpdateCtr;
|
||
|
|
||
|
}; // end class CBaseNode
|
||
|
|
||
|
class CRootFolder : public CBaseNode
|
||
|
{
|
||
|
public:
|
||
|
CRootFolder();
|
||
|
virtual ~CRootFolder();
|
||
|
|
||
|
private:
|
||
|
static const GUID m_GUID;
|
||
|
static const TCHAR *const m_szGUID;
|
||
|
|
||
|
public:
|
||
|
virtual LPCTSTR GetNodeName();
|
||
|
virtual HRESULT GetDisplayInfo(RESULTDATAITEM &ResultItem);
|
||
|
|
||
|
virtual const GUID *GetGUIDptr() { return &m_GUID; }
|
||
|
virtual const TCHAR *GetGUIDsz() { return m_szGUID; }
|
||
|
virtual BOOL IsPersisted() { return TRUE; }
|
||
|
|
||
|
virtual const int sImage() { return PROCCON_SNAPIN_IMAGE; }
|
||
|
virtual const int sOpenImage() { return PROCCON_SNAPIN_IMAGE; }
|
||
|
|
||
|
virtual void SetID(HSCOPEITEM ID) { m_ID = ID; }
|
||
|
virtual HSCOPEITEM GetID() { return m_ID; }
|
||
|
virtual int GetChildrenCount() { return 3; }
|
||
|
|
||
|
virtual const PCid GetPCid();
|
||
|
virtual BOOL ReportPCError();
|
||
|
virtual BOOL ReportPCError(PCULONG32 nLastError);
|
||
|
virtual PCULONG32 GetLastPCError();
|
||
|
|
||
|
virtual HRESULT OnParentExpand(BOOL bExpand, HSCOPEITEM hItem, IConsoleNameSpace2 *ipConsoleNameSpace2);
|
||
|
virtual HRESULT OnExpand(BOOL bExpand, HSCOPEITEM hItem, IConsoleNameSpace2 *ipConsoleNameSpace2 );
|
||
|
virtual HRESULT OnParentRemoveChildren(HSCOPEITEM hID);
|
||
|
virtual HRESULT OnRemoveChildren(HSCOPEITEM hID);
|
||
|
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID, LPARAM Cookie);
|
||
|
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb);
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb, LPARAM Cookie);
|
||
|
virtual HRESULT OnHelpCmd(IDisplayHelp *ipDisplayHelp);
|
||
|
|
||
|
virtual HRESULT OnCreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, DATA_OBJECT_TYPES context);
|
||
|
virtual HRESULT QueryPagesFor();
|
||
|
|
||
|
virtual HRESULT OnPropertyChange(PROPERTY_CHANGE_HDR *pUpdate, IConsole2 *ipConsole2);
|
||
|
|
||
|
void Config(BOOL bUseLocal, TCHAR Computer[SNAPIN_MAX_COMPUTERNAME_LENGTH + 1]);
|
||
|
void SetConsoleInterface(LPCONSOLE ipConsole2) { m_ipConsole2 = ipConsole2; }
|
||
|
|
||
|
private:
|
||
|
HSCOPEITEM m_ID;
|
||
|
HSCOPEITEM m_ParentID; // when the snapin is an extension, we have a parent in the scope pane
|
||
|
list<CBaseNode *> m_NodeList;
|
||
|
ITEM_STR m_name;
|
||
|
tstring m_machinedisplayname;
|
||
|
tstring m_longname; // Node's display name including computer context...
|
||
|
|
||
|
//ITEM_STR m_TypeDescriptionStr;
|
||
|
ITEM_STR m_DescriptionStr;
|
||
|
|
||
|
BOOL m_bUseLocalComputer;
|
||
|
TCHAR m_Computer[SNAPIN_MAX_COMPUTERNAME_LENGTH + 1];
|
||
|
BOOL m_bDirty;
|
||
|
|
||
|
PCid m_hPC; // handle to service
|
||
|
PCULONG32 m_PCLastError;
|
||
|
LPCONSOLE m_ipConsole2;
|
||
|
|
||
|
static const CONTEXTMENUITEMBYID TaskMenuItems[];
|
||
|
|
||
|
private:
|
||
|
HRESULT AddNodes(IConsoleNameSpace2 *ipConsoleNameSpace2);
|
||
|
HRESULT AddNode (IConsoleNameSpace2 *ipConsoleNameSpace2, CBaseNode *pSubNode);
|
||
|
void FreeNodes();
|
||
|
|
||
|
LPCTSTR GetComputerDisplayName() const;
|
||
|
HRESULT OnChangeComputerConnection();
|
||
|
|
||
|
public:
|
||
|
LPCTSTR GetComputerName() const;
|
||
|
|
||
|
void SetComputerName(TCHAR Computer[SNAPIN_MAX_COMPUTERNAME_LENGTH + 1]);
|
||
|
virtual void GetComputerConnectionInfo(COMPUTER_CONNECTION_INFO &out);
|
||
|
|
||
|
// IStream implementation
|
||
|
HRESULT IsDirty() const;
|
||
|
HRESULT Load(IStream *pStm);
|
||
|
HRESULT Save(IStream *pStm, BOOL fClearDirty);
|
||
|
HRESULT GetSizeMax(ULARGE_INTEGER *pcbSize);
|
||
|
}; // end class CRootFolder
|
||
|
|
||
|
|
||
|
class CRuleFolder : public CBaseNode
|
||
|
{
|
||
|
public:
|
||
|
CRuleFolder(CBaseNode *pParent);
|
||
|
virtual ~CRuleFolder();
|
||
|
|
||
|
private:
|
||
|
static const GUID m_GUID;
|
||
|
static const TCHAR *const m_szGUID;
|
||
|
|
||
|
public:
|
||
|
virtual LPCTSTR GetNodeName();
|
||
|
virtual HRESULT GetDisplayInfo(RESULTDATAITEM &ResultItem);
|
||
|
|
||
|
virtual const GUID *GetGUIDptr() { return &m_GUID; }
|
||
|
virtual const TCHAR *GetGUIDsz() { return m_szGUID; }
|
||
|
virtual BOOL IsPersisted() { return TRUE; }
|
||
|
|
||
|
virtual const int sImage() { return RULES_IMAGE; }
|
||
|
virtual const int sOpenImage() { return RULES_OPENIMAGE; }
|
||
|
|
||
|
virtual void SetID(HSCOPEITEM ID) { m_ID = ID; }
|
||
|
virtual HSCOPEITEM GetID() { return m_ID; }
|
||
|
virtual int GetChildrenCount() { return 3; } //$$ determine dynamically...although really only zero/non-zero critical
|
||
|
|
||
|
virtual HRESULT OnExpand(BOOL bExpand, HSCOPEITEM hItem, IConsoleNameSpace2 *ipConsoleNameSpace2);
|
||
|
virtual HRESULT OnShow(BOOL bSelecting, HSCOPEITEM hItem, IHeaderCtrl2* ipHeaderCtrl, IConsole2* ipConsole2);
|
||
|
|
||
|
virtual HRESULT OnViewChange(IResultData *ipResultData, LPARAM thing, LONG_PTR hint);
|
||
|
virtual HRESULT ShowAllItems(IResultData* ipResultData, BOOL bCacheValid);
|
||
|
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb);
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb, LPARAM Cookie);
|
||
|
virtual HRESULT OnHelpCmd(IDisplayHelp *ipDisplayHelp);
|
||
|
|
||
|
|
||
|
private:
|
||
|
HSCOPEITEM m_ID;
|
||
|
list<CBaseNode *> m_NodeList;
|
||
|
|
||
|
ITEM_STR m_name; // Node's display name
|
||
|
|
||
|
enum {
|
||
|
NAME_COLUMN,
|
||
|
};
|
||
|
|
||
|
|
||
|
HRESULT AddNode (IConsoleNameSpace2 *ipConsoleNameSpace2, CBaseNode *pSubNode);
|
||
|
void FreeNodes();
|
||
|
|
||
|
}; // end class CRuleFolder
|
||
|
|
||
|
|
||
|
class CNameRuleFolder : public CBaseNode
|
||
|
{
|
||
|
public:
|
||
|
CNameRuleFolder(CBaseNode *pParent);
|
||
|
virtual ~CNameRuleFolder();
|
||
|
|
||
|
private:
|
||
|
static const GUID m_GUID;
|
||
|
static const TCHAR *const m_szGUID;
|
||
|
|
||
|
public:
|
||
|
virtual LPCTSTR GetNodeName();
|
||
|
virtual HRESULT GetDisplayInfo(RESULTDATAITEM &ResultItem);
|
||
|
|
||
|
virtual const GUID *GetGUIDptr() { return &m_GUID; }
|
||
|
virtual const TCHAR *GetGUIDsz() { return m_szGUID; }
|
||
|
virtual BOOL IsPersisted() { return TRUE; }
|
||
|
|
||
|
virtual const int sImage() { return ALIASRULES_IMAGE; }
|
||
|
virtual const int sOpenImage() { return ALIASRULES_OPENIMAGE; }
|
||
|
|
||
|
virtual void SetID(HSCOPEITEM ID) { m_ID = ID; }
|
||
|
virtual HSCOPEITEM GetID() { return m_ID; }
|
||
|
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed);
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed, LPARAM Cookie);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID, LPARAM Cookie);
|
||
|
virtual HRESULT OnShow(BOOL bSelecting, HSCOPEITEM hItem, IHeaderCtrl2* ipHeaderCtrl, IConsole2* ipConsole2);
|
||
|
virtual HRESULT OnDelete (IConsole2 *ipConsole2, LPARAM Cookie);
|
||
|
virtual HRESULT OnDblClick(IConsole2 *ipConsole2, LPARAM Cookie);
|
||
|
virtual HRESULT OnRefresh (IConsole2 *ipConsole2);
|
||
|
|
||
|
virtual HRESULT OnViewChange(IResultData *ipResultData, LPARAM data, LONG_PTR hint);
|
||
|
virtual HRESULT ShowAllItems(IResultData* ipResultData, BOOL bCacheValid);
|
||
|
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb);
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb, LPARAM Cookie);
|
||
|
virtual HRESULT OnHelpCmd(IDisplayHelp *ipDisplayHelp);
|
||
|
|
||
|
private:
|
||
|
HSCOPEITEM m_ID;
|
||
|
ITEM_STR m_name;
|
||
|
ITEM_STR m_ResultStr;
|
||
|
|
||
|
enum {
|
||
|
PROCESS_ALIAS_COLUMN,
|
||
|
DESCRIPTION_COLUMN,
|
||
|
MATCH_COLUMN,
|
||
|
TYPE_COLUMN
|
||
|
};
|
||
|
|
||
|
list<PCNameRule *> Cache;
|
||
|
list<PCNameRule *> MemBlocks;
|
||
|
static const CONTEXTMENUITEMBYID ResultsTopMenuItems[];
|
||
|
|
||
|
BOOL OnInsertNameRule(IConsole2 *ipConsole2, PCNameRule *InsertPoint);
|
||
|
HRESULT OnEdit(IConsole2 *ipConsole2,PCNameRule *InsertPoint, INT32 index, BOOL bReadOnly);
|
||
|
|
||
|
void ClearCache();
|
||
|
BOOL RefreshCache();
|
||
|
|
||
|
}; // end class CNameRuleFolder
|
||
|
|
||
|
|
||
|
class CProcessRuleFolder : public CBaseNode
|
||
|
{
|
||
|
public:
|
||
|
CProcessRuleFolder(CBaseNode *pParent);
|
||
|
virtual ~CProcessRuleFolder();
|
||
|
|
||
|
private:
|
||
|
static const GUID m_GUID;
|
||
|
static const TCHAR *const m_szGUID;
|
||
|
|
||
|
public:
|
||
|
virtual LPCTSTR GetNodeName();
|
||
|
virtual HRESULT GetDisplayInfo(RESULTDATAITEM &ResultItem);
|
||
|
|
||
|
virtual const GUID *GetGUIDptr() { return &m_GUID; }
|
||
|
virtual const TCHAR *GetGUIDsz() { return m_szGUID; }
|
||
|
virtual BOOL IsPersisted() { return TRUE; }
|
||
|
|
||
|
virtual const int sImage() { return PROCRULES_IMAGE; }
|
||
|
virtual const int sOpenImage() { return PROCRULES_OPENIMAGE; }
|
||
|
|
||
|
virtual void SetID(HSCOPEITEM ID) { m_ID = ID; }
|
||
|
virtual HSCOPEITEM GetID() { return m_ID; }
|
||
|
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID, LPARAM Cookie);
|
||
|
virtual HRESULT OnShow(BOOL bSelecting, HSCOPEITEM hItem, IHeaderCtrl2 *ipHeaderCtrl, IConsole2 *ipConsole2);
|
||
|
virtual HRESULT OnDelete (IConsole2 *ipConsole2, LPARAM Cookie);
|
||
|
virtual HRESULT OnRefresh(IConsole2 *ipConsole2);
|
||
|
|
||
|
virtual HRESULT OnViewChange(IResultData *ipResultData, LPARAM data, LONG_PTR hint);
|
||
|
virtual HRESULT ShowAllItems(IResultData* ipResultData, BOOL bCacheValid);
|
||
|
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb);
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb, LPARAM Cookie);
|
||
|
virtual HRESULT OnHelpCmd(IDisplayHelp *ipDisplayHelp);
|
||
|
|
||
|
virtual HRESULT OnCreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, DATA_OBJECT_TYPES context, LPARAM Cookie);
|
||
|
virtual HRESULT QueryPagesFor(LPARAM Cookie);
|
||
|
virtual HRESULT OnPropertyChange(PROPERTY_CHANGE_HDR *pUpdate, IConsole2 *ipConsole2);
|
||
|
|
||
|
private:
|
||
|
HSCOPEITEM m_ID;
|
||
|
ITEM_STR m_name; // Node's display name
|
||
|
ITEM_STR m_ResultStr;
|
||
|
|
||
|
enum {
|
||
|
PROCESS_ALIAS_COLUMN,
|
||
|
DESCRIPTION_COLUMN,
|
||
|
APPLY_JOB_COLUMN,
|
||
|
JOB_COLUMN,
|
||
|
APPLY_AFFINITY_COLUMN,
|
||
|
AFFINITY_COLUMN,
|
||
|
APPLY_PRIORITY_COLUMN,
|
||
|
PRIORITY_COLUMN,
|
||
|
APPLY_MINMAXWS_COLUMN,
|
||
|
MINWS_COLUMN,
|
||
|
MAXWS_COLUMN,
|
||
|
};
|
||
|
|
||
|
list<PCProcSummary *> Cache;
|
||
|
list<PCProcSummary *> MemBlocks;
|
||
|
static const CONTEXTMENUITEMBYID TopMenuItems[];
|
||
|
static const CONTEXTMENUITEMBYID NewMenuItems[];
|
||
|
|
||
|
void ClearCache();
|
||
|
BOOL RefreshCache();
|
||
|
|
||
|
}; // end class CProcessRuleFolder
|
||
|
|
||
|
class CJobRuleFolder : public CBaseNode
|
||
|
{
|
||
|
public:
|
||
|
CJobRuleFolder(CBaseNode *pParent);
|
||
|
virtual ~CJobRuleFolder();
|
||
|
|
||
|
private:
|
||
|
static const GUID m_GUID;
|
||
|
static const TCHAR *const m_szGUID;
|
||
|
|
||
|
public:
|
||
|
virtual LPCTSTR GetNodeName();
|
||
|
virtual HRESULT GetDisplayInfo(RESULTDATAITEM &ResultItem);
|
||
|
|
||
|
virtual const GUID *GetGUIDptr() { return &m_GUID; }
|
||
|
virtual const TCHAR *GetGUIDsz() { return m_szGUID; }
|
||
|
virtual BOOL IsPersisted() { return TRUE; }
|
||
|
|
||
|
virtual const int sImage() { return JOBRULES_IMAGE; }
|
||
|
virtual const int sOpenImage() { return JOBRULES_OPENIMAGE; }
|
||
|
|
||
|
virtual void SetID(HSCOPEITEM ID) { m_ID = ID; }
|
||
|
virtual HSCOPEITEM GetID() { return m_ID; }
|
||
|
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID, LPARAM Cookie);
|
||
|
virtual HRESULT OnShow(BOOL bSelecting, HSCOPEITEM hItem, IHeaderCtrl2* ipHeaderCtrl, IConsole2 *ipConsole2);
|
||
|
virtual HRESULT OnDelete (IConsole2 *ipConsole2, LPARAM Cookie);
|
||
|
virtual HRESULT OnRefresh(IConsole2 *ipConsole2);
|
||
|
|
||
|
virtual HRESULT OnViewChange(IResultData *ipResultData, LPARAM data, LONG_PTR hint);
|
||
|
virtual HRESULT ShowAllItems(IResultData* ipResultData, BOOL bCacheValid);
|
||
|
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb);
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb, LPARAM Cookie);
|
||
|
virtual HRESULT OnHelpCmd(IDisplayHelp *ipDisplayHelp);
|
||
|
|
||
|
virtual HRESULT OnCreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, DATA_OBJECT_TYPES context, LPARAM Cookie);
|
||
|
virtual HRESULT QueryPagesFor(LPARAM Cookie);
|
||
|
virtual HRESULT OnPropertyChange(PROPERTY_CHANGE_HDR *pUpdate, IConsole2 *ipConsole2);
|
||
|
|
||
|
private:
|
||
|
HSCOPEITEM m_ID;
|
||
|
ITEM_STR m_name; // Node's display name
|
||
|
ITEM_STR m_ResultStr;
|
||
|
|
||
|
enum {
|
||
|
JOB_COLUMN,
|
||
|
DESCRIPTION_COLUMN,
|
||
|
APPLY_AFFINITY_COLUMN,
|
||
|
AFFINITY_COLUMN,
|
||
|
APPLY_PRIORITY_COLUMN,
|
||
|
PRIORITY_COLUMN,
|
||
|
APPLY_SCHEDULING_CLASS_COLUMN,
|
||
|
SCHEDULING_CLASS_COLUMN,
|
||
|
APPLY_MINMAXWS_COLUMN,
|
||
|
MINWS_COLUMN,
|
||
|
MAXWS_COLUMN,
|
||
|
APPLY_PROC_CMEM_LIMIT_COLUMN,
|
||
|
PROC_CMEM_LIMIT_COLUMN,
|
||
|
APPLY_JOB_CMEM_LIMIT_COLUMN,
|
||
|
JOB_CMEM_LIMIT_COLUMN,
|
||
|
APPLY_PROCCOUNT_LIMIT_COLUMN,
|
||
|
PROCCOUNT_LIMIT_COLUMN,
|
||
|
APPLY_PROC_CPUTIME_LIMIT_COLUMN,
|
||
|
PROC_CPUTIME_LIMIT_COLUMN,
|
||
|
APPLY_JOB_CPUTIME_LIMIT_COLUMN,
|
||
|
JOB_CPUTIME_LIMIT_COLUMN,
|
||
|
ACTION_JOB_CPUTIME_LIMIT_COLUMN,
|
||
|
ENDJOB_ON_NO_PROC_COLUMN,
|
||
|
DIE_ON_UNHANDLED_EXCEPT_COLUMN,
|
||
|
ALLOW_BREAKAWAY_COLUMN,
|
||
|
ALLOW_SILENT_BREAKAWAY_COLUMN
|
||
|
};
|
||
|
|
||
|
|
||
|
list<PCJobSummary *> Cache;
|
||
|
list<PCJobSummary *> MemBlocks;
|
||
|
static const CONTEXTMENUITEMBYID TopMenuItems[];
|
||
|
static const CONTEXTMENUITEMBYID NewMenuItems[];
|
||
|
|
||
|
void ClearCache();
|
||
|
BOOL RefreshCache();
|
||
|
|
||
|
}; // end class CJobRuleFolder
|
||
|
|
||
|
|
||
|
|
||
|
class CProcessFolder : public CBaseNode
|
||
|
{
|
||
|
public:
|
||
|
CProcessFolder(CBaseNode *pParent);
|
||
|
virtual ~CProcessFolder();
|
||
|
|
||
|
private:
|
||
|
static const GUID m_GUID;
|
||
|
static const TCHAR *const m_szGUID;
|
||
|
|
||
|
public:
|
||
|
virtual LPCTSTR GetNodeName();
|
||
|
virtual HRESULT GetDisplayInfo(RESULTDATAITEM &ResultItem);
|
||
|
|
||
|
virtual const GUID *GetGUIDptr() { return &m_GUID; }
|
||
|
virtual const TCHAR *GetGUIDsz() { return m_szGUID; }
|
||
|
virtual BOOL IsPersisted() { return TRUE; }
|
||
|
|
||
|
virtual const int sImage() { return PROCESSES_IMAGE; }
|
||
|
virtual const int sOpenImage() { return PROCESSES_OPENIMAGE; }
|
||
|
|
||
|
virtual void SetID(HSCOPEITEM ID) { m_ID = ID; }
|
||
|
virtual HSCOPEITEM GetID() { return m_ID; }
|
||
|
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed);
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed, LPARAM Cookie);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID, LPARAM Cookie);
|
||
|
virtual HRESULT OnShow(BOOL bSelecting, HSCOPEITEM hItem, IHeaderCtrl2* ipHeaderCtrl, IConsole2 *ipConsole2);
|
||
|
virtual HRESULT OnRefresh(IConsole2 *ipConsole2);
|
||
|
|
||
|
virtual HRESULT OnViewChange(IResultData *ipResultData, LPARAM data, LONG_PTR hint);
|
||
|
virtual HRESULT ShowAllItems(IResultData* ipResultData, BOOL bCacheValid);
|
||
|
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb);
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb, LPARAM Cookie);
|
||
|
virtual HRESULT OnHelpCmd(IDisplayHelp *ipDisplayHelp);
|
||
|
|
||
|
virtual HRESULT OnCreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, DATA_OBJECT_TYPES context, LPARAM Cookie);
|
||
|
virtual HRESULT QueryPagesFor(LPARAM Cookie);
|
||
|
virtual HRESULT OnPropertyChange(PROPERTY_CHANGE_HDR *pUpdate, IConsole2 *ipConsole2);
|
||
|
|
||
|
private:
|
||
|
HSCOPEITEM m_ID;
|
||
|
ITEM_STR m_name; // Node's display name
|
||
|
ITEM_STR m_ResultStr;
|
||
|
LONG m_fViewOption;
|
||
|
|
||
|
public:
|
||
|
enum {
|
||
|
PROCESS_ALIAS_COLUMN,
|
||
|
IMAGE_NAME_COLUMN,
|
||
|
PID_COLUMN,
|
||
|
STATUS_COLUMN,
|
||
|
AFFINITY_COLUMN,
|
||
|
PRIORITY_COLUMN,
|
||
|
JOB_OWNER_COLUMN,
|
||
|
USER_TIME_COLUMN,
|
||
|
KERNEL_TIME_COLUMN,
|
||
|
CREATE_TIME_COLUMN
|
||
|
};
|
||
|
|
||
|
private:
|
||
|
list<PCProcListItem *> Cache;
|
||
|
list<PCProcListItem *> MemBlocks;
|
||
|
|
||
|
static const CONTEXTMENUITEMBYID ResultsTopMenuItems[];
|
||
|
static const CONTEXTMENUITEMBYID ViewMenuItems[];
|
||
|
|
||
|
void ClearCache();
|
||
|
BOOL RefreshCache();
|
||
|
|
||
|
}; // end class CProcessFolder
|
||
|
|
||
|
|
||
|
class CJobFolder : public CBaseNode
|
||
|
{
|
||
|
public:
|
||
|
CJobFolder(CBaseNode *pParent);
|
||
|
virtual ~CJobFolder();
|
||
|
|
||
|
private:
|
||
|
static const GUID m_GUID;
|
||
|
static const TCHAR *const m_szGUID;
|
||
|
|
||
|
public:
|
||
|
virtual LPCTSTR GetNodeName();
|
||
|
virtual HRESULT GetDisplayInfo(RESULTDATAITEM &ResultItem);
|
||
|
|
||
|
virtual const GUID *GetGUIDptr() { return &m_GUID; }
|
||
|
virtual const TCHAR *GetGUIDsz() { return m_szGUID; }
|
||
|
virtual BOOL IsPersisted() { return TRUE; }
|
||
|
|
||
|
virtual const int sImage() { return JOBS_IMAGE; }
|
||
|
virtual const int sOpenImage() { return JOBS_OPENIMAGE; }
|
||
|
|
||
|
virtual void SetID(HSCOPEITEM ID) { m_ID = ID; }
|
||
|
virtual HSCOPEITEM GetID() { return m_ID; }
|
||
|
virtual int GetChildrenCount() { return 1; } //$$ determine dynamically...although really only zero/non-zero critical
|
||
|
|
||
|
virtual HRESULT OnExpand(BOOL bExpand, HSCOPEITEM hItem, IConsoleNameSpace2 *ipConsoleNameSpace2);
|
||
|
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed);
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed, LPARAM Cookie);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, IConsoleNameSpace2 *ipConsoleNameSpace2, long nCommandID);
|
||
|
//virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID, LPARAM Cookie);
|
||
|
//virtual HRESULT OnShow(BOOL bSelecting, HSCOPEITEM hItem, IHeaderCtrl2* ipHeaderCtrl, IConsole2 *ipConsole2);
|
||
|
virtual HRESULT OnShow(BOOL bSelecting, HSCOPEITEM hItem, IHeaderCtrl2* ipHeaderCtrl, IConsole2 *ipConsole2, IConsoleNameSpace2 *ipConsoleNameSpace2);
|
||
|
//virtual HRESULT OnRefresh(IConsole2 *ipConsole2);
|
||
|
virtual HRESULT OnRefresh(IConsole2 *ipConsole2, IConsoleNameSpace2 *ipConsoleNameSpace2);
|
||
|
|
||
|
virtual HRESULT OnViewChange(IResultData *ipResultData, LPARAM data, LONG_PTR hint);
|
||
|
virtual HRESULT ShowAllItems(IResultData* ipResultData, BOOL bCacheValid);
|
||
|
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb);
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb, LPARAM Cookie);
|
||
|
virtual HRESULT OnHelpCmd(IDisplayHelp *ipDisplayHelp);
|
||
|
|
||
|
private:
|
||
|
HSCOPEITEM m_ID;
|
||
|
list<CBaseNode *> m_NodeList;
|
||
|
|
||
|
ITEM_STR m_name; // Node's display name
|
||
|
ITEM_STR m_ResultStr;
|
||
|
LONG m_fViewOption;
|
||
|
|
||
|
public:
|
||
|
enum {
|
||
|
JOB_COLUMN,
|
||
|
STATUS_COLUMN,
|
||
|
ACTIVE_PROCESS_COUNT_COLUMN,
|
||
|
AFFINITY_COLUMN,
|
||
|
PRIORITY_COLUMN,
|
||
|
SCHEDULING_CLASS_COLUMN,
|
||
|
|
||
|
USER_TIME_COLUMN,
|
||
|
KERNEL_TIME_COLUMN,
|
||
|
|
||
|
PERIOD_USER_TIME_COLUMN,
|
||
|
PERIOD_KERNEL_TIME_COLUMN,
|
||
|
PAGE_FAULT_COUNT_COLUMN,
|
||
|
PROCESS_COUNT_COLUMN,
|
||
|
TERMINATED_PROCESS_COUNT_COLUMN,
|
||
|
READOP_COUNT_COLUMN,
|
||
|
WRITEOP_COUNT_COLUMN,
|
||
|
OTHEROP_COUNT_COLUMN,
|
||
|
READTRANS_COUNT_COLUMN,
|
||
|
WRITETRANS_COUNT_COLUMN,
|
||
|
OTHERTRANS_COUNT_COLUMN,
|
||
|
PEAK_PROC_MEM_COLUMN,
|
||
|
PEAK_JOB_MEM_COLUMN,
|
||
|
};
|
||
|
|
||
|
private:
|
||
|
static const CONTEXTMENUITEMBYID ViewMenuItems[];
|
||
|
|
||
|
HRESULT RePopulateScopePane(IConsoleNameSpace2 *ipConsoleNameSpace2);
|
||
|
HRESULT AddNode(IConsoleNameSpace2 *ipConsoleNameSpace2, CBaseNode *pSubNode);
|
||
|
void FreeNodes();
|
||
|
|
||
|
int ScopeCount(HSCOPEITEM ID, IConsoleNameSpace2 *ipConsoleNameSpace2);
|
||
|
|
||
|
}; // end class CJobFolder
|
||
|
|
||
|
class CJobItemFolder : public CBaseNode
|
||
|
{
|
||
|
public:
|
||
|
CJobItemFolder(CBaseNode *pParent, const PCJobListItem &thejob);
|
||
|
virtual ~CJobItemFolder();
|
||
|
|
||
|
private:
|
||
|
static const GUID m_GUID;
|
||
|
static const TCHAR *const m_szGUID;
|
||
|
|
||
|
public:
|
||
|
virtual LPCTSTR GetNodeName();
|
||
|
virtual HRESULT GetDisplayInfo(RESULTDATAITEM &ResultItem);
|
||
|
|
||
|
virtual const GUID *GetGUIDptr() { return &m_GUID; }
|
||
|
virtual const TCHAR *GetGUIDsz() { return m_szGUID; }
|
||
|
virtual BOOL IsPersisted() { return FALSE; }
|
||
|
|
||
|
virtual const int sImage() { if (m_JobItem.lFlags & PCLFLAG_IS_DEFINED) return JOBITEMIMAGE; else return JOBIMAGE_NODEFINITION; }
|
||
|
virtual const int sOpenImage() { return sImage(); }
|
||
|
|
||
|
virtual void SetID(HSCOPEITEM ID) { m_ID = ID; }
|
||
|
virtual HSCOPEITEM GetID() { return m_ID; }
|
||
|
|
||
|
virtual HRESULT AddMenuItems(LPCONTEXTMENUCALLBACK piCallback, long * pInsertionAllowed);
|
||
|
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, IConsoleNameSpace2 *ipConsoleNameSpace2, long nCommandID);
|
||
|
virtual HRESULT OnMenuCommand(IConsole2 *ipConsole2, long nCommandID);
|
||
|
virtual HRESULT OnShow(BOOL bSelecting, HSCOPEITEM hItem, IHeaderCtrl2* ipHeaderCtrl, IConsole2 *ipConsole2, IConsoleNameSpace2 *ipConsoleNameSpace2);
|
||
|
//virtual HRESULT OnShow(BOOL bSelecting, HSCOPEITEM hItem, IHeaderCtrl2* ipHeaderCtrl, IConsole2 *ipConsole2);
|
||
|
virtual HRESULT OnRefresh(IConsole2 *ipConsole2);
|
||
|
|
||
|
virtual HRESULT OnViewChange(IResultData *ipResultData, LPARAM data, LONG_PTR hint);
|
||
|
virtual HRESULT ShowAllItems(IResultData* ipResultData, BOOL bCacheValid);
|
||
|
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb);
|
||
|
virtual HRESULT OnSelect(BOOL bScope, BOOL bSelect, IConsoleVerb* ipConsoleVerb, LPARAM Cookie);
|
||
|
virtual HRESULT OnHelpCmd(IDisplayHelp *ipDisplayHelp);
|
||
|
|
||
|
virtual HRESULT OnCreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, DATA_OBJECT_TYPES context);
|
||
|
virtual HRESULT OnCreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, DATA_OBJECT_TYPES context, LPARAM Cookie);
|
||
|
virtual HRESULT QueryPagesFor();
|
||
|
virtual HRESULT QueryPagesFor(LPARAM Cookie);
|
||
|
virtual HRESULT OnPropertyChange(PROPERTY_CHANGE_HDR *pUpdate, IConsole2 *ipConsole2);
|
||
|
|
||
|
private:
|
||
|
HSCOPEITEM m_ID;
|
||
|
PCJobListItem m_JobItem;
|
||
|
|
||
|
ITEM_STR m_ResultStr;
|
||
|
|
||
|
list<PCProcListItem *> Cache;
|
||
|
list<PCProcListItem *> MemBlocks;
|
||
|
|
||
|
static const CONTEXTMENUITEMBYID ResultsTopMenuItems[];
|
||
|
|
||
|
void ClearCache();
|
||
|
BOOL RefreshCache(IConsole2 *ipConsole2);
|
||
|
|
||
|
HRESULT PCJobListGetDisplayInfo(RESULTDATAITEM &ResultItem, const PCJobListItem &ref, ITEM_STR &StorageStr);
|
||
|
|
||
|
}; // end class CJobItemFolder
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif // _CLASS_BASENODE_
|