⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pviewdat.c

📁 <Win2k系统编程>源码.次数为国人自编,内容丰富,还是不错的.
💻 C
📖 第 1 页 / 共 3 页
字号:
/******************************************************************************
                            P V I E W   D A T A
    Name:       pviewdat.c
    Description:
        This module collects the data to be displayed in pview.
******************************************************************************/
#include    <windows.h>
#include    <winperf.h>
#include    "perfdata.h"
#include    "pviewdat.h"
#include    "pviewdlg.h"
#include    <stdio.h>
#include    <stdlib.h>
#include    <string.h>
#include    <tchar.h>
#define NODATA  TEXT("--------")

void   FormatTimeFields(double  fTime,PTIME_FIELD pTimeFld);

DWORD PutCounterDWKB(HWND Wnd,DWORD dwItemID,PPERF_INSTANCE pInst,
         PPERF_OBJECT pObj,DWORD dwCounterIdx);

DWORD   PutCounterHEX
               (HWND            hWnd,
                DWORD           dwItemID,
                PPERF_INSTANCE  pInst,
                PPERF_OBJECT    pObj,
                DWORD           dwCounterIdx);

DWORD   PutCounterDW
               (HWND            hWnd,
                DWORD           dwItemID,
                PPERF_INSTANCE  pInst,
                PPERF_OBJECT    pObj,
                DWORD           dwCounterIdx);

void    PaintAddressSpace
               (HWND            hMemDlg,
                PPERF_INSTANCE  pInst,
                PPERF_OBJECT    pObj,
                DWORD           TotalID,
                DWORD           NoAccessID,
                DWORD           NoAccessIndex,
                DWORD           ReadOnlyID,
                DWORD           ReadOnlyIndex,
                DWORD           ReadWriteID,
                DWORD           ReadWriteIndex,
                DWORD           WriteCopyID,
                DWORD           WriteCopyIndex,
                DWORD           ExecuteID,
                DWORD           ExecuteIndex1,
                DWORD           ExecuteIndex2,
                DWORD           ExecuteIndex3,
                DWORD           ExecuteIndex4);

void    PaintMemDlgAddrData
               (HWND            hMemDlg,
                PPERF_INSTANCE  pInst,
                PPERF_OBJECT    pObj);

void    PaintMemDlgVMData
               (HWND            hMemDlg,
                PPERF_INSTANCE  pInst,
                PPERF_OBJECT    pObj);

void    PaintPviewDlgMemoryData
               (HWND            hPviewDlg,
                PPERF_INSTANCE  pInst,
                PPERF_OBJECT    pObj);

void    RefreshMemoryDlgImageList
               (HWND            hImageList,
                DWORD           ParentIndex,
                PPERF_OBJECT    pImageObj);

WORD    ProcessPriority
               (PPERF_OBJECT    pObject,
                PPERF_INSTANCE  pInstance);

void    SetProcessListText
               (PPERF_INSTANCE pInst,
                PPERF_COUNTER  pCPU,
                PPERF_COUNTER  pPRIV,
                PPERF_COUNTER  pProcID,
                double         fTime,
                LPTSTR         str);

void    SetThreadListText
               (PPERF_INSTANCE  pInst,
                PPERF_COUNTER   pCPU,
                PPERF_COUNTER   pPRIV,
                double          fTime,
                LPTSTR          str);

//*********************************************************************
//
//      FormatTimeFields
//
//  Formats a double value to time fields.
//
void FormatTimeFields   (double      fTime,
                         PTIME_FIELD pTimeFld)
{
	INT     i;
	double   f;
    f = fTime/3600;
    pTimeFld->Hours = i = (int)f;
    f = f - i;
    pTimeFld->Mins = i = (int)(f = f * 60);
    f = f - i;
    pTimeFld->Secs = i = (int)(f = f * 60);
    f = f - i;
    pTimeFld->mSecs = (int)(f * 1000);
}
//*********************************************************************
//
//      PutCounterDWKB
//
//  Display a DWORD counter's data in KB units.
//
DWORD   PutCounterDWKB (HWND            hWnd,
                        DWORD           dwItemID,
                        PPERF_INSTANCE  pInst,
                        PPERF_OBJECT    pObj,
                        DWORD           dwCounterIdx)
{
	PPERF_COUNTER   pCounter;
	DWORD           *pdwData;
	TCHAR           szTemp[20];
    if (pCounter = FindCounter (pObj, dwCounterIdx))
	{
        pdwData = (DWORD *) CounterData (pInst, pCounter);
        wsprintf (szTemp, TEXT("%ld KB"), *pdwData/1024);
        SetDlgItemText (hWnd, dwItemID, szTemp);
        return *pdwData;
	}
    else
	{
        SetDlgItemText (hWnd, dwItemID, NODATA);
        return 0;
	}

}

//*********************************************************************
//
//      PutCounterHEX
//
//  Display a DWORD counter's data in hex.
//
DWORD   PutCounterHEX  (HWND            hWnd,
                        DWORD           dwItemID,
                        PPERF_INSTANCE  pInst,
                        PPERF_OBJECT    pObj,
                        DWORD           dwCounterIdx)
{
	PPERF_COUNTER   pCounter;
	DWORD           *pdwData;
	TCHAR           szTemp[20];

    if (pCounter = FindCounter (pObj, dwCounterIdx))
	{
        pdwData = (DWORD *) CounterData (pInst, pCounter);
        wsprintf (szTemp, TEXT("0x%08x"), *pdwData);
        SetDlgItemText (hWnd, dwItemID, szTemp);
        return *pdwData;
	}
    else
	{
        SetDlgItemText (hWnd, dwItemID, NODATA);
        return 0;
	}
}

//*********************************************************************
//
//      PutCounterDWKB
//
//  Display a DWORD counter's data.
//
DWORD   PutCounterDW   (HWND            hWnd,
                        DWORD           dwItemID,
                        PPERF_INSTANCE  pInst,
                        PPERF_OBJECT    pObj,
                        DWORD           dwCounterIdx)
{
	PPERF_COUNTER   pCounter;
	DWORD           *pdwData;
    if (pCounter = FindCounter (pObj, dwCounterIdx))
	{
        pdwData = (DWORD *) CounterData (pInst, pCounter);
        SetDlgItemInt (hWnd, dwItemID, *pdwData, FALSE);
        return *pdwData;
	}
    else
	{
        SetDlgItemText (hWnd, dwItemID, NODATA);
        return 0;
	}
}

//*********************************************************************
//
//      PaintAddressSpace
//
//
void    PaintAddressSpace  (HWND            hMemDlg,
                            PPERF_INSTANCE  pInst,
                            PPERF_OBJECT    pObj,
                            DWORD           TotalID,
                            DWORD           NoAccessID,
                            DWORD           NoAccessIndex,
                            DWORD           ReadOnlyID,
                            DWORD           ReadOnlyIndex,
                            DWORD           ReadWriteID,
                            DWORD           ReadWriteIndex,
                            DWORD           WriteCopyID,
                            DWORD           WriteCopyIndex,
                            DWORD           ExecuteID,
                            DWORD           ExecuteIndex1,
                            DWORD           ExecuteIndex2,
                            DWORD           ExecuteIndex3,
                            DWORD           ExecuteIndex4)
{
	PPERF_COUNTER   pCounter;
	DWORD           *pdwData;
	TCHAR           szTemp[20];
	DWORD           dwTotal = 0;
	DWORD           dwExecute = 0;
	BOOL            bCounter = FALSE;
    dwTotal += PutCounterDWKB (hMemDlg, NoAccessID,  pInst, pObj, NoAccessIndex);
    dwTotal += PutCounterDWKB (hMemDlg, ReadOnlyID,  pInst, pObj, ReadOnlyIndex);
    dwTotal += PutCounterDWKB (hMemDlg, ReadWriteID, pInst, pObj, ReadWriteIndex);
    dwTotal += PutCounterDWKB (hMemDlg, WriteCopyID, pInst, pObj, WriteCopyIndex);

    // execute is the sum of the following
    //
    if (pCounter = FindCounter (pObj, ExecuteIndex1))
	{
        pdwData = (DWORD *) CounterData (pInst, pCounter);
        dwTotal += *pdwData;
        dwExecute += *pdwData;
        bCounter = TRUE;
	}
    if (pCounter = FindCounter (pObj, ExecuteIndex2))
	{
        pdwData = (DWORD *) CounterData (pInst, pCounter);
        dwTotal += *pdwData;
        dwExecute += *pdwData;
        bCounter = TRUE;
	}
    if (pCounter = FindCounter (pObj, ExecuteIndex3))
	{
        pdwData = (DWORD *) CounterData (pInst, pCounter);
        dwTotal += *pdwData;
        dwExecute += *pdwData;
        bCounter = TRUE;
	}
    if (pCounter = FindCounter (pObj, ExecuteIndex4))
	{
        pdwData = (DWORD *) CounterData (pInst, pCounter);
        dwTotal += *pdwData;
        dwExecute += *pdwData;
        bCounter = TRUE;
	}
    if (bCounter)
	{
        wsprintf (szTemp, TEXT("%ld KB"), dwExecute/1024);
        SetDlgItemText (hMemDlg, ExecuteID, szTemp);
	}
    else
        SetDlgItemText (hMemDlg, ExecuteID, NODATA);

    wsprintf (szTemp, TEXT("%ld KB"), dwTotal/1024);
    SetDlgItemText (hMemDlg, TotalID, szTemp);
}

//*********************************************************************
//
//      PaintMemDlgAddrData
//
//  Paint the memory dialog address space data.
//
void    PaintMemDlgAddrData(HWND            hMemDlg,
                            PPERF_INSTANCE  pInst,
                            PPERF_OBJECT    pObj)
{
    PaintAddressSpace (hMemDlg, pInst, pObj,
                       MEMORY_TOTALPRIVATE_COMMIT,
                       MEMORY_PRIVATE_NOACCESS,  PX_PROCESS_PRIVATE_NOACCESS,
                       MEMORY_PRIVATE_READONLY,  PX_PROCESS_PRIVATE_READONLY,
                       MEMORY_PRIVATE_READWRITE, PX_PROCESS_PRIVATE_READWRITE,
                       MEMORY_PRIVATE_WRITECOPY, PX_PROCESS_PRIVATE_WRITECOPY,
                       MEMORY_PRIVATE_EXECUTE,   PX_PROCESS_PRIVATE_EXECUTABLE,
                                                 PX_PROCESS_PRIVATE_EXE_READONLY,
                                                 PX_PROCESS_PRIVATE_EXE_READWRITE,
                                                 PX_PROCESS_PRIVATE_EXE_WRITECOPY);

    PaintAddressSpace (hMemDlg, pInst, pObj,
                       MEMORY_TOTALMAPPED_COMMIT,
                       MEMORY_MAPPED_NOACCESS,  PX_PROCESS_MAPPED_NOACCESS,
                       MEMORY_MAPPED_READONLY,  PX_PROCESS_MAPPED_READONLY,
                       MEMORY_MAPPED_READWRITE, PX_PROCESS_MAPPED_READWRITE,
                       MEMORY_MAPPED_WRITECOPY, PX_PROCESS_MAPPED_WRITECOPY,
                       MEMORY_MAPPED_EXECUTE,   PX_PROCESS_MAPPED_EXECUTABLE,
                                                PX_PROCESS_MAPPED_EXE_READONLY,
                                                PX_PROCESS_MAPPED_EXE_READWRITE,
                                                PX_PROCESS_MAPPED_EXE_WRITECOPY);

    PaintAddressSpace (hMemDlg, pInst, pObj,
                       MEMORY_TOTALIMAGE_COMMIT,
                       MEMORY_IMAGE_NOACCESS,   PX_PROCESS_IMAGE_NOACCESS,
                       MEMORY_IMAGE_READONLY,   PX_PROCESS_IMAGE_READONLY,
                       MEMORY_IMAGE_READWRITE,  PX_PROCESS_IMAGE_READWRITE,
                       MEMORY_IMAGE_WRITECOPY,  PX_PROCESS_IMAGE_WRITECOPY,
                       MEMORY_IMAGE_EXECUTE,    PX_PROCESS_IMAGE_EXECUTABLE,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -