Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

444 lines
14 KiB

/*======================================================================================//
| Process Control //
| //
|Copyright (c) 1998 Sequent Computer Systems, Incorporated. All rights reserved. //
| //
|File Name: ManagementPages.h //
| //
|Description: Definition of Management Property pages //
| //
|Created: Paul Skoglund 09-1998 //
| //
|Rev History: //
| //
|=======================================================================================*/
#ifndef __MANAGEMENTPAGES_H_
#define __MANAGEMENTPAGES_H_
#include "Globals.h"
#include "ppage.h"
#include "Container.h"
const AFFINITY ProcessorBit = 1;
const TIME_VALUE CNSperTenths = 1000 * 1000;
const TIME_VALUE CNSperSec = CNSperTenths * 10;
const TIME_VALUE CNSperMinute = CNSperSec * 60;
const TIME_VALUE CNSperHour = CNSperMinute * 60;
const TIME_VALUE CNSperDay = CNSperHour * 24;
const TIME_VALUE CNSperYear = CNSperDay * 365;
const TIME_VALUE SecondsperYear = 365 * 24 * 60 * 60;
const TIME_VALUE MinutesperYear = 365 * 24 * 60;
const TIME_VALUE HoursperYear = 365 * 24;
void SetMGMTFlag(PC_MGMT_FLAGS &flag, PCMgmtFlags bit, BOOL bOn);
// some formating helper functions
LPCTSTR FormatMatchType (ITEM_STR str, const MATCH_TYPE matchType);
LPCTSTR FormatAffinity (ITEM_STR str, const AFFINITY affinity);
LPCTSTR FormatPriority (ITEM_STR str, const PRIORITY priority);
LPCTSTR FormatSchedulingClass (ITEM_STR str, const SCHEDULING_CLASS schedClass);
LPCTSTR FormatProcCount (ITEM_STR str, const PROC_COUNT procCount);
LPCTSTR FormatPCUINT32 (ITEM_STR str, const PCUINT32 uInt);
LPCTSTR FormatPCINT32 (ITEM_STR str, const PCINT32 aInt);
LPCTSTR FormatPCUINT64 (ITEM_STR str, const PCUINT64 aUInt64);
LPCTSTR FormatApplyFlag (ITEM_STR str, const BOOL applied);
LPCTSTR FormatMemory (ITEM_STR str, const MEMORY_VALUE memory_value);
LPCTSTR FormatTime (ITEM_STR str, const TIME_VALUE timevalue);
LPCTSTR FormatTimeToms (ITEM_STR str, const TIME_VALUE time);
LPCTSTR FormatCNSTime (ITEM_STR str, TIME_VALUE timevalue);
LPCTSTR FormatCPUTIMELimitAction(ITEM_STR str, const BOOL bMsgOnLimit);
LPCTSTR FormatSheetTitle(CComBSTR &Title, const CComBSTR &item_name, const COMPUTER_CONNECTION_INFO &Target);
// some dialog helper functions
int PriorityToID(PRIORITY p);
PRIORITY IDToPriority(int id);
int MatchTypeToID(MATCH_TYPE matchType);
BOOL ValidateTimeField(HWND hDlg, WORD wID, TIME_VALUE &newtime);
class CBaseNode;
class CMGMTAffinityPage :
public CMySnapInPropertyPageImpl<CMGMTAffinityPage>
{
public :
CMGMTAffinityPage(int nTitle, CProcDetailContainer *pContainer, AFFINITY ProcessorMask = 0xFFffFFff);
CMGMTAffinityPage(int nTitle, CJobDetailContainer *pContainer, AFFINITY ProcessorMask = 0xFFffFFff);
~CMGMTAffinityPage();
enum { IDD = IDD_AFFINITY_PAGE };
bool m_affinitychk;
AFFINITY m_affinity;
AFFINITY m_ProcessorMask;
BEGIN_MSG_MAP(CMGMTAffinityPage)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_HELP, OnWMHelp)
COMMAND_RANGE_HANDLER(IDC_AFFINITY1, IDC_AFFINITY64, OnAffinityEdit)
COMMAND_HANDLER(IDC_AFFINITY_CHK, BN_CLICKED, OnChk)
CHAIN_MSG_MAP(CMySnapInPropertyPageImpl<CMGMTAffinityPage>)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnWMHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnAffinityEdit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnChk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
BOOL OnSetActive();
BOOL OnHelp();
BOOL OnKillActive() { return Validate(TRUE); }
BOOL OnApply();
BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
BOOL Validate(BOOL bSave = FALSE);
void SetReadOnly() { m_bReadOnly = TRUE;}
private:
HANDLE m_hIconImage;
typedef enum _PageType
{
PROCESS_PAGE,
JOB_PAGE,
} PageType;
CProcDetailContainer *m_pProcContainer;
CJobDetailContainer *m_pJobContainer;
BOOL m_bReadOnly;
PageType m_PageType;
union {
struct
{
int affinitychk : 1;
int affinity : 1;
} Fields;
int on;
} PageFields;
void Initialize();
void ApplyControlEnableRules(BOOL bForceDisable);
};
class CMGMTPriorityPage :
public CMySnapInPropertyPageImpl<CMGMTPriorityPage>
{
public :
CMGMTPriorityPage(int nTitle, CProcDetailContainer *pContainer);
CMGMTPriorityPage(int nTitle, CJobDetailContainer *pContainer);
~CMGMTPriorityPage();
enum { IDD = IDD_PRIORITY_PAGE };
bool m_prioritychk;
PRIORITY m_priority;
BEGIN_MSG_MAP(CMGMTPriorityPage)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_HELP, OnWMHelp)
COMMAND_RANGE_HANDLER(IDC_LOW, IDC_REALTIME, OnPriorityEdit)
COMMAND_HANDLER(IDC_PRIORITY_CHK, BN_CLICKED, OnChk)
CHAIN_MSG_MAP(CMySnapInPropertyPageImpl<CMGMTPriorityPage>)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnWMHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnChk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPriorityEdit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
BOOL OnSetActive();
BOOL OnHelp();
BOOL OnKillActive() { return Validate(TRUE); }
BOOL OnApply();
BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
BOOL Validate(BOOL bSave = FALSE);
void SetReadOnly() { m_bReadOnly = TRUE;}
private:
HANDLE m_hIconImage;
typedef enum _PageType
{
PROCESS_PAGE,
JOB_PAGE
} PageType;
CProcDetailContainer *m_pProcContainer;
CJobDetailContainer *m_pJobContainer;
BOOL m_bReadOnly;
PageType m_PageType;
union {
struct
{
int prioritychk : 1;
int priority : 1;
} Fields;
int on;
} PageFields;
void Initialize();
void ApplyControlEnableRules(BOOL bForceDisable);
};
class CMGMTSchedulingClassPage :
public CMySnapInPropertyPageImpl<CMGMTSchedulingClassPage>
{
public :
CMGMTSchedulingClassPage(int nTitle, CJobDetailContainer *pContainer);
~CMGMTSchedulingClassPage();
enum { IDD = IDD_SCHEDULING_CLASS_PAGE };
bool m_schedClasschk;
SCHEDULING_CLASS m_schedClass;
BEGIN_MSG_MAP(CMGMTSchedulingClassPage)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_HELP, OnWMHelp)
COMMAND_HANDLER(IDC_SCLASS, EN_CHANGE, OnEditChange)
COMMAND_HANDLER(IDC_SCHEDULING_CHK, BN_CLICKED, OnChk)
CHAIN_MSG_MAP(CMySnapInPropertyPageImpl<CMGMTSchedulingClassPage>)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnWMHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnEditChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnChk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnPriorityEdit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
BOOL OnHelp();
BOOL OnKillActive() { return Validate(TRUE); }
BOOL OnApply();
BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
BOOL Validate(BOOL bSave = FALSE);
void SetReadOnly() { m_bReadOnly = TRUE;}
private:
CJobDetailContainer *m_pJobContainer;
BOOL m_bReadOnly;
union {
struct
{
int schedClasschk : 1;
int schedClass : 1;
} Fields;
int on;
} PageFields;
}; // CMGMTSchedulingClassPage
class CMGMTMemoryPage :
public CMySnapInPropertyPageImpl<CMGMTMemoryPage>
{
public :
CMGMTMemoryPage(int nTitle, CProcDetailContainer *pContainer);
CMGMTMemoryPage(int nTitle, CJobDetailContainer *pContainer);
~CMGMTMemoryPage();
enum { IDD = IDD_MEMORY_PAGE };
bool m_WSchk;
MEMORY_VALUE m_minWS;
MEMORY_VALUE m_maxWS;
bool m_procmemorylimitchk;
MEMORY_VALUE m_procmemorylimit;
bool m_jobmemorylimitchk;
MEMORY_VALUE m_jobmemorylimit;
BEGIN_MSG_MAP(CMGMTMemoryPage)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_HELP, OnWMHelp)
NOTIFY_HANDLER (IDC_MINWS_SPIN, UDN_DELTAPOS, OnSpin)
NOTIFY_HANDLER (IDC_MAXWS_SPIN, UDN_DELTAPOS, OnSpin)
NOTIFY_HANDLER (IDC_PROC_SPIN, UDN_DELTAPOS, OnSpin)
NOTIFY_HANDLER (IDC_JOB_SPIN, UDN_DELTAPOS, OnSpin)
COMMAND_HANDLER(IDC_WORKINGSET_CHK, BN_CLICKED, OnChk)
COMMAND_HANDLER(IDC_MINWS, EN_CHANGE, OnEditChange)
COMMAND_HANDLER(IDC_MAXWS, EN_CHANGE, OnEditChange)
COMMAND_HANDLER(IDC_PROCMEMORY_CHK, BN_CLICKED, OnChk)
COMMAND_HANDLER(IDC_PROCMEMORY, EN_CHANGE, OnEditChange)
COMMAND_HANDLER(IDC_JOBMEMORY_CHK, BN_CLICKED, OnChk)
COMMAND_HANDLER(IDC_JOBMEMORY, EN_CHANGE, OnEditChange)
CHAIN_MSG_MAP(CMySnapInPropertyPageImpl<CMGMTMemoryPage>)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnWMHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnEditChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnChk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnSpin(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
BOOL OnSetActive();
BOOL OnHelp();
BOOL OnKillActive() { return Validate(TRUE); }
BOOL OnApply();
BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
BOOL Validate(BOOL bSave = FALSE);
void SetReadOnly() { m_bReadOnly = TRUE;}
private:
HANDLE m_hIconImage;
CProcDetailContainer *m_pProcContainer;
CJobDetailContainer *m_pJobContainer;
BOOL m_bReadOnly;
union {
struct
{
int WSchk : 1;
int minWS : 1;
int maxWS : 1;
int procmemorylimitchk : 1;
int procmemorylimit : 1;
int jobmemorylimitchk : 1;
int jobmemorylimit : 1;
} Fields;
int on;
} PageFields;
void Initialize();
void ApplyControlEnableRules(BOOL bForceDisable);
};
class CMGMTTimePage :
public CMySnapInPropertyPageImpl<CMGMTTimePage>
{
public :
CMGMTTimePage(int Title, CJobDetailContainer *pContainer);
~CMGMTTimePage();
enum { IDD = IDD_TIME_PAGE };
bool m_procusertimechk;
TIME_VALUE m_procusertime;
bool m_jobusertimechk;
TIME_VALUE m_jobusertime;
bool m_jobmsgontimelimit;
BEGIN_MSG_MAP(CMGMTMemoryPage)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_HELP, OnWMHelp)
COMMAND_HANDLER(IDC_PROCUSERTIME_CHK, BN_CLICKED, OnChk)
COMMAND_HANDLER(IDC_PROCUSERTIME, EN_CHANGE, OnEditChange)
COMMAND_HANDLER(IDC_JOBUSERTIME_CHK, BN_CLICKED, OnChk)
COMMAND_HANDLER(IDC_JOBUSERTIME, EN_CHANGE, OnEditChange)
COMMAND_HANDLER(IDC_JOBTIMELIMIT_TERM,BN_CLICKED, OnChk)
COMMAND_HANDLER(IDC_JOBTIMELIMIT_MSG, BN_CLICKED, OnChk)
CHAIN_MSG_MAP(CMySnapInPropertyPageImpl<CMGMTTimePage>)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnWMHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnEditChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnChk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
BOOL OnHelp();
BOOL OnKillActive() { return Validate(TRUE); }
BOOL OnApply();
BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
BOOL Validate(BOOL bSave = FALSE);
void SetReadOnly() { m_bReadOnly = TRUE;}
private:
CJobDetailContainer *m_pJobContainer;
BOOL m_bReadOnly;
union {
struct
{
int procusertimechk : 1;
int procusertime : 1;
int jobusertimechk : 1;
int jobmsgontimelimit : 1;
int jobusertime : 1;
} Fields;
int on;
} PageFields;
};
class CMGMTAdvancedPage :
public CMySnapInPropertyPageImpl<CMGMTAdvancedPage>
{
public :
CMGMTAdvancedPage(int nTitle, CJobDetailContainer *pContainer);
~CMGMTAdvancedPage();
enum { IDD = IDD_ADVANCED_PAGE };
bool m_endjob;
bool m_unhandledexcept;
bool m_breakaway;
bool m_silentbreakaway;
BEGIN_MSG_MAP(CMGMTAdvancedPage)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_HELP, OnWMHelp)
COMMAND_HANDLER(IDC_ENDJOB_CHK, BN_CLICKED, OnChk)
COMMAND_HANDLER(IDC_UNHANDLEDEXCEPT_CHK, BN_CLICKED, OnChk)
COMMAND_HANDLER(IDC_BREAKAWAY_CHK, BN_CLICKED, OnChk)
COMMAND_HANDLER(IDC_SILENTBREAKAWAY_CHK, BN_CLICKED, OnChk)
CHAIN_MSG_MAP(CMySnapInPropertyPageImpl<CMGMTAdvancedPage>)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnWMHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnChk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
BOOL OnHelp();
BOOL OnKillActive() { return Validate(TRUE); }
BOOL OnApply();
BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
BOOL Validate(BOOL bSave = FALSE);
void SetReadOnly() { m_bReadOnly = TRUE;}
private:
CJobDetailContainer *m_pJobContainer;
BOOL m_bReadOnly;
union {
struct
{
int endjob : 1;
int unhandledexcept : 1;
int breakaway : 1;
int silentbreakaway : 1;
} Fields;
int on;
} PageFields;
};
#endif // __MANAGEMENTPAGES_H_