PVIEWDAT.H


/******************************************************************************\
* This is a part of the Microsoft Source Code Samples.
* Copyright 1993 - 1998 Microsoft Corporation.
* All rights reserved.
* This source code is only intended as a supplement to
* Microsoft Development Tools and/or WinHelp documentation.
* See these sources for detailed information regarding the
* Microsoft samples programs.
\******************************************************************************/


/******************************************************************************

P V I E W D A T A

Name: pviewdat.h

Description:
Prototypes of functions used in pviewdat.c

******************************************************************************/





//******************************************************************************
//
// Titles and indexes.
//
// See GetPerfTitleSz() in perfdata.c on how to retrieve these data.
//
// This is not complete, for complete listing
// see under hkey_local_system
// \software
// \microsoft
// \windows nt
// \currentversion
// \perflib
// \###
//

#define PN_PROCESS TEXT("Process")
#define PN_PROCESS_CPU TEXT("% Processor Time")
#define PN_PROCESS_PRIV TEXT("% Privileged Time")
#define PN_PROCESS_USER TEXT("% User Time")
#define PN_PROCESS_WORKING_SET TEXT("Working Set")
#define PN_PROCESS_PEAK_WS TEXT("Working Set Peak")
#define PN_PROCESS_PRIO TEXT("Priority Base")
#define PN_PROCESS_ELAPSE TEXT("Elapsed Time")
#define PN_PROCESS_ID TEXT("ID Process")
#define PN_PROCESS_PRIVATE_PAGE TEXT("Private Bytes")
#define PN_PROCESS_VIRTUAL_SIZE TEXT("Virtual Bytes")
#define PN_PROCESS_PEAK_VS TEXT("Virtual Bytes Peak")
#define PN_PROCESS_FAULT_COUNT TEXT("Page Faults/sec")


#define PN_THREAD TEXT("Thread")
#define PN_THREAD_CPU TEXT("% Processor Time")
#define PN_THREAD_PRIV TEXT("% Privileged Time")
#define PN_THREAD_USER TEXT("% User Time")
#define PN_THREAD_START TEXT("Start Address")
#define PN_THREAD_SWITCHES TEXT("Context Switches/sec")
#define PN_THREAD_PRIO TEXT("Priority Current")
#define PN_THREAD_BASE_PRIO TEXT("Priority Base")
#define PN_THREAD_ELAPSE TEXT("Elapsed Time")

#define PN_THREAD_DETAILS TEXT("Thread Details")
#define PN_THREAD_PC TEXT("User PC")

#define PN_IMAGE TEXT("Image")
#define PN_IMAGE_NOACCESS TEXT("No Access")
#define PN_IMAGE_READONLY TEXT("Read Only")
#define PN_IMAGE_READWRITE TEXT("Read/Write")
#define PN_IMAGE_WRITECOPY TEXT("Write Copy")
#define PN_IMAGE_EXECUTABLE TEXT("Executable")
#define PN_IMAGE_EXE_READONLY TEXT("Exec Read Only")
#define PN_IMAGE_EXE_READWRITE TEXT("Exec Read/Write")
#define PN_IMAGE_EXE_WRITECOPY TEXT("Exec Write Copy")


#define PN_PROCESS_ADDRESS_SPACE TEXT("Process Address Space")
#define PN_PROCESS_PRIVATE_NOACCESS TEXT("Reserved Space No Access")
#define PN_PROCESS_PRIVATE_READONLY TEXT("Reserved Space Read Only")
#define PN_PROCESS_PRIVATE_READWRITE TEXT("Reserved Space Read/Write")
#define PN_PROCESS_PRIVATE_WRITECOPY TEXT("Reserved Space Write Copy")
#define PN_PROCESS_PRIVATE_EXECUTABLE TEXT("Reserved Space Executable")
#define PN_PROCESS_PRIVATE_EXE_READONLY TEXT("Reserved Space Exec Read Only")
#define PN_PROCESS_PRIVATE_EXE_READWRITE TEXT("Reserved Space Exec Read/Write")
#define PN_PROCESS_PRIVATE_EXE_WRITECOPY TEXT("Reserved Space Exec Write Copy")


#define PN_PROCESS_MAPPED_NOACCESS TEXT("Mapped Space No Access")
#define PN_PROCESS_MAPPED_READONLY TEXT("Mapped Space Read Only")
#define PN_PROCESS_MAPPED_READWRITE TEXT("Mapped Space Read/Write")
#define PN_PROCESS_MAPPED_WRITECOPY TEXT("Mapped Space Write Copy")
#define PN_PROCESS_MAPPED_EXECUTABLE TEXT("Mapped Space Executable")
#define PN_PROCESS_MAPPED_EXE_READONLY TEXT("Mapped Space Exec Read Only")
#define PN_PROCESS_MAPPED_EXE_READWRITE TEXT("Mapped Space Exec Read/Write")
#define PN_PROCESS_MAPPED_EXE_WRITECOPY TEXT("Mapped Space Exec Write Copy")


#define PN_PROCESS_IMAGE_NOACCESS TEXT("Image Space No Access")
#define PN_PROCESS_IMAGE_READONLY TEXT("Image Space Read Only")
#define PN_PROCESS_IMAGE_READWRITE TEXT("Image Space Read/Write")
#define PN_PROCESS_IMAGE_WRITECOPY TEXT("Image Space Write Copy")
#define PN_PROCESS_IMAGE_EXECUTABLE TEXT("Image Space Executable")
#define PN_PROCESS_IMAGE_EXE_READONLY TEXT("Image Space Exec Read Only")
#define PN_PROCESS_IMAGE_EXE_READWRITE TEXT("Image Space Exec Read/Write")
#define PN_PROCESS_IMAGE_EXE_WRITECOPY TEXT("Image Space Exec Write Copy")







DWORD PX_PROCESS;
DWORD PX_PROCESS_CPU;
DWORD PX_PROCESS_PRIV;
DWORD PX_PROCESS_USER;
DWORD PX_PROCESS_WORKING_SET;
DWORD PX_PROCESS_PEAK_WS;
DWORD PX_PROCESS_PRIO;
DWORD PX_PROCESS_ELAPSE;
DWORD PX_PROCESS_ID;
DWORD PX_PROCESS_PRIVATE_PAGE;
DWORD PX_PROCESS_VIRTUAL_SIZE;
DWORD PX_PROCESS_PEAK_VS;
DWORD PX_PROCESS_FAULT_COUNT;
DWORD PX_PROCESS_PAGED_POOL_QUOTA;
DWORD PX_PROCESS_PEAK_PAGED_POOL_QUOTA;
DWORD PX_PROCESS_NONPAGED_POOL_QUOTA;
DWORD PX_PROCESS_PEAK_PAGED_POOL;
DWORD PX_PROCESS_PEAK_NONPAGED_POOL;
DWORD PX_PROCESS_CUR_PAGED_POOL;
DWORD PX_PROCESS_CUR_NONPAGED_POOL;
DWORD PX_PROCESS_PAGED_POOL_LIMIT;
DWORD PX_PROCESS_NONPAGED_POOL_LIMIT;


DWORD PX_THREAD;
DWORD PX_THREAD_CPU;
DWORD PX_THREAD_PRIV;
DWORD PX_THREAD_USER;
DWORD PX_THREAD_START;
DWORD PX_THREAD_SWITCHES;
DWORD PX_THREAD_PRIO;
DWORD PX_THREAD_BASE_PRIO;
DWORD PX_THREAD_ELAPSE;

DWORD PX_THREAD_DETAILS;
DWORD PX_THREAD_PC;

DWORD PX_IMAGE;
DWORD PX_IMAGE_NOACCESS;
DWORD PX_IMAGE_READONLY;
DWORD PX_IMAGE_READWRITE;
DWORD PX_IMAGE_WRITECOPY;
DWORD PX_IMAGE_EXECUTABLE;
DWORD PX_IMAGE_EXE_READONLY;
DWORD PX_IMAGE_EXE_READWRITE;
DWORD PX_IMAGE_EXE_WRITECOPY;


DWORD PX_PROCESS_ADDRESS_SPACE;
DWORD PX_PROCESS_PRIVATE_NOACCESS;
DWORD PX_PROCESS_PRIVATE_READONLY;
DWORD PX_PROCESS_PRIVATE_READWRITE;
DWORD PX_PROCESS_PRIVATE_WRITECOPY;
DWORD PX_PROCESS_PRIVATE_EXECUTABLE;
DWORD PX_PROCESS_PRIVATE_EXE_READONLY;
DWORD PX_PROCESS_PRIVATE_EXE_READWRITE;
DWORD PX_PROCESS_PRIVATE_EXE_WRITECOPY;


DWORD PX_PROCESS_MAPPED_NOACCESS;
DWORD PX_PROCESS_MAPPED_READONLY;
DWORD PX_PROCESS_MAPPED_READWRITE;
DWORD PX_PROCESS_MAPPED_WRITECOPY;
DWORD PX_PROCESS_MAPPED_EXECUTABLE;
DWORD PX_PROCESS_MAPPED_EXE_READONLY;
DWORD PX_PROCESS_MAPPED_EXE_READWRITE;
DWORD PX_PROCESS_MAPPED_EXE_WRITECOPY;


DWORD PX_PROCESS_IMAGE_NOACCESS;
DWORD PX_PROCESS_IMAGE_READONLY;
DWORD PX_PROCESS_IMAGE_READWRITE;
DWORD PX_PROCESS_IMAGE_WRITECOPY;
DWORD PX_PROCESS_IMAGE_EXECUTABLE;
DWORD PX_PROCESS_IMAGE_EXE_READONLY;
DWORD PX_PROCESS_IMAGE_EXE_READWRITE;
DWORD PX_PROCESS_IMAGE_EXE_WRITECOPY;











#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))







typedef struct _TIME_FIELD
TIME_FIELD,
*PTIME_FIELD;

struct _TIME_FIELD
{
INT Hours;
INT Mins;
INT Secs;
INT mSecs;
};








void RefreshPviewDlgThreadPC
(HWND hPviewDlg,
LPTSTR szProcessName,
LPTSTR szThreadName,
PPERF_OBJECT pThreadDetailsObject,
PPERF_DATA pCostlyData);


BOOL RefreshMemoryDlg
(HWND hMemDlg,
PPERF_INSTANCE pProcessInstance,
PPERF_OBJECT pProcessObject,
PPERF_OBJECT pAddressObject,
PPERF_OBJECT pImageObject);


void RefreshMemoryDlgImage
(HWND hMemDlg,
DWORD dwIndex,
PPERF_OBJECT pImageObject);


void RefreshPviewDlgMemoryData
(HWND hPviewDlg,
PPERF_INSTANCE pProcessInstance,
PPERF_OBJECT pProcessObject,
PPERF_OBJECT pAddressObject);


PPERF_DATA RefreshPerfData
(HKEY hPerfKey,
LPTSTR szObjectIndex,
PPERF_DATA pData,
DWORD *pDataSize);


void RefreshProcessList
(HWND hProcessList,
PPERF_OBJECT pObject);


void RefreshProcessData
(HWND hWnd,
PPERF_OBJECT pObject,
DWORD ProcessIndex);


void RefreshThreadList
(HWND hThreadList,
PPERF_OBJECT pObject,
DWORD ParentIndex);


void RefreshThreadData
(HWND hWnd,
PPERF_OBJECT pThreadObj,
DWORD ThreadIndex,
PPERF_OBJECT pProcessObj,
PPERF_INSTANCE pProcessInst);

WORD ProcessPriority
(PPERF_OBJECT pObject,
PPERF_INSTANCE pInstance);