久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

探測Win2K/XP/2003本機系統(tǒng)信息

瀏覽:172日期:2023-10-28 18:25:31
;Native API乃Windows用戶模式中為上層Win32 API提供接口的本機系統(tǒng)服務。平常我們總是調用MS為我們提供的公用的Win32 API函數(shù)來實現(xiàn)來實現(xiàn)我們系統(tǒng)的功能。今天我們要談的是如何通過本機系統(tǒng)服務(Native API)來探測本機系統(tǒng)信息。當然,微軟沒有為我們提供關于本機系統(tǒng)服務的文檔 (Undocumented),也就是不會為對它的使用提供任何的保證,所以我們不提倡使用Native API來開發(fā)軟件。不過在特殊情況下,本機系統(tǒng)服務卻為我們提供了通向“秘密”的捷徑。本文提到的信息僅在Windows2000/XP/2003上測試過。

今天,我們主要討論的是一個函數(shù)NtQuerySystemInformation(ZwQuerySystemInformation)。當然,你不要小看這么一個函數(shù),它卻為我們提供了豐富的系統(tǒng)信息,同時還包括對某些信息的控制和設置。以下是這個函數(shù)的原型:

typedef NTSTATUS (__stdcall *NTQUERYSYSTEMINFORMATION) (IN; SYSTEM_INFORMATION_CLASS SystemInformationClass,IN OUT; PVOIDSystemInformation,IN; ULONGSystemInformationLength,OUT PULONGReturnLength; OPTIONAL);NTQUERYSYSTEMINFORMATION NtQuerySystemInformation;

從中可以看到,SystemInformationClass是一個類型信息,它大概提供了50余種信息,也就是我們可以通過這個函數(shù)對大約50多種的系統(tǒng)信息進行探測或設置。SystemInformation是一個LPVOID型的指針,它為我們提供需要獲得的信息,或是我們需要設置的系統(tǒng)信息。SystemInformationLength是SystemInformation的長度,它根據(jù)探測的信息類型來決定。至于ReturnLength則是系統(tǒng)返回的需要的長度,通常可以設置為空指針(NULL)。

首先,我們來看看大家比較熟悉的系統(tǒng)進程/線程相關的信息。這個題目在網(wǎng)上已經討論了N多年了,所以我就不在老生常談了,呵呵。那么就提出這個結構類型的定義:

typedef struct _SYSTEM_PROCESSES{ULONG; NextEntryDelta;; //構成結構序列的偏移量;ULONG; ThreadCount; //線程數(shù)目;ULONG; Reserved1[6];LARGE_INTEGER; CreateTime;; //創(chuàng)建時間;LARGE_INTEGER; UserTime;//用戶模式(Ring 3)的CPU時間;LARGE_INTEGER; KernelTime;; //內核模式(Ring 0)的CPU時間;UNICODE_STRING ProcessName; //進程名稱;KPRIORITY; BasePriority;//進程優(yōu)先權;ULONG; ProcessId;//進程標識符;ULONG; InheritedFromProcessId;; //父進程的標識符;ULONG; HandleCount; //句柄數(shù)目;ULONG; Reserved2[2];VM_COUNTERSVmCounters;; //虛擬存儲器的結構,見下;IO_COUNTERSIoCounters;; //IO計數(shù)結構,見下;SYSTEM_THREADS Threads[1];; //進程相關線程的結構數(shù)組,見下;}SYSTEM_PROCESSES,*PSYSTEM_PROCESSES;

typedef struct _SYSTEM_THREADS{LARGE_INTEGER KernelTime;//CPU內核模式使用時間;LARGE_INTEGER UserTime; //CPU用戶模式使用時間;LARGE_INTEGER CreateTime;//線程創(chuàng)建時間;ULONG WaitTime; //等待時間;PVOID StartAddress; //線程開始的虛擬地址;CLIENT_ID ClientId; //線程標識符;KPRIORITY Priority; //線程優(yōu)先級;KPRIORITY BasePriority; //基本優(yōu)先級;ULONG ContextSwitchCount;//環(huán)境切換數(shù)目;THREAD_STATE; State;//當前狀態(tài);KWAIT_REASON; WaitReason;//等待原因;}SYSTEM_THREADS,*PSYSTEM_THREADS;

typedef struct _VM_COUNTERS{ULONG PeakVirtualSize;; //虛擬存儲峰值大小;ULONG VirtualSize;; //虛擬存儲大小;ULONG PageFaultCount;//頁故障數(shù)目;ULONG PeakWorkingSetSize;//工作集峰值大小;ULONG WorkingSetSize;//工作集大小;ULONG QuotaPeakPagedPoolUsage;; //分頁池使用配額峰值;ULONG QuotaPagedPoolUsage;; //分頁池使用配額;ULONG QuotaPeakNonPagedPoolUsage;//非分頁池使用配額峰值;ULONG QuotaNonPagedPoolUsage;//非分頁池使用配額;ULONG PagefileUsage;//頁文件使用情況;ULONG PeakPagefileUsage;//頁文件使用峰值;}VM_COUNTERS,*PVM_COUNTERS;

typedef struct _IO_COUNTERS{LARGE_INTEGER ReadOperationCount;//I/O讀操作數(shù)目;LARGE_INTEGER WriteOperationCount;; //I/O寫操作數(shù)目;LARGE_INTEGER OtherOperationCount;; //I/O其他操作數(shù)目;LARGE_INTEGER ReadTransferCount;//I/O讀數(shù)據(jù)數(shù)目;LARGE_INTEGER WriteTransferCount;//I/O寫數(shù)據(jù)數(shù)目;LARGE_INTEGER OtherTransferCount;//I/O其他操作數(shù)據(jù)數(shù)目;}IO_COUNTERS,*PIO_COUNTERS;

以上這些信息應該是比較全面的了,在Win32 API里為我們提供了PSAPI(進程狀態(tài))和ToolHelp32這兩種探測系統(tǒng)進程/線程信息的方式,在Windows2K/XP/2003都支持它們。

現(xiàn)在,我們來看看系統(tǒng)的性能信息,性能結構SYSTEM_PERFORMANCE_INFORMATION為我們提供了70余種系統(tǒng)性能方面的信息,真是太豐富了,請慢慢體會~

typedef struct _SYSTEM_PERFORMANCE_INFORMATION{LARGE_INTEGER; IdleTime;//CPU空閑時間;LARGE_INTEGER; ReadTransferCount;//I/O讀操作數(shù)目;LARGE_INTEGER; WriteTransferCount;; //I/O寫操作數(shù)目;LARGE_INTEGER; OtherTransferCount;; //I/O其他操作數(shù)目;ULONG; ReadOperationCount;; //I/O讀數(shù)據(jù)數(shù)目;ULONG; WriteOperationCount; //I/O寫數(shù)據(jù)數(shù)目;ULONG; OtherOperationCount; //I/O其他操作數(shù)據(jù)數(shù)目;ULONG; AvailablePages;; //可獲得的頁數(shù)目;ULONG; TotalCommittedPages; //總共提交頁數(shù)目;ULONG; TotalCommitLimit;//已提交頁數(shù)目;ULONG; PeakCommitment;; //頁提交峰值;ULONG; PageFaults;; //頁故障數(shù)目;ULONG; WriteCopyFaults; //Copy-On-Write故障數(shù)目;ULONG; TransitionFaults;//軟頁故障數(shù)目;ULONG; Reserved1;ULONG; DemandZeroFaults;//需求0故障數(shù);ULONG; PagesRead;//讀頁數(shù)目;ULONG; PageReadIos; //讀頁I/O操作數(shù);ULONG; Reserved2[2];ULONG; PagefilePagesWritten;//已寫頁文件頁數(shù);ULONG; PagefilePageWriteIos;//已寫頁文件操作數(shù);ULONG; MappedFilePagesWritten;; //已寫映射文件頁數(shù);ULONG; MappedFileWriteIos;; //已寫映射文件操作數(shù);ULONG; PagedPoolUsage;; //分頁池使用;ULONG; NonPagedPoolUsage;//非分頁池使用;ULONG; PagedPoolAllocs; //分頁池分配情況;ULONG; PagedPoolFrees;; //分頁池釋放情況;ULONG; NonPagedPoolAllocs;; //非分頁池分配情況;ULONG; NonPagedPoolFress;//非分頁池釋放情況;ULONG; TotalFreeSystemPtes; //系統(tǒng)頁表項釋放總數(shù);ULONG; SystemCodePage;; //操作系統(tǒng)代碼頁數(shù);ULONG; TotalSystemDriverPages;; //可分頁驅動程序頁數(shù);ULONG; TotalSystemCodePages;//操作系統(tǒng)代碼頁總數(shù);ULONG; SmallNonPagedLookasideListAllocateHits; //小非分頁側視列表分配次數(shù);ULONG; SmallPagedLookasideListAllocateHits;//小分頁側視列表分配次數(shù);ULONG; Reserved3;ULONG; MmSystemCachePage;; //系統(tǒng)緩存頁數(shù);ULONG; PagedPoolPage;; //分頁池頁數(shù);ULONG; SystemDriverPage;//可分頁驅動頁數(shù);ULONG; FastReadNoWait; //異步快速讀數(shù)目;ULONG; FastReadWait;//同步快速讀數(shù)目;ULONG; FastReadResourceMiss;//快速讀資源沖突數(shù);ULONG; FastReadNotPossible;//快速讀失敗數(shù);ULONG; FastMdlReadNoWait;; //異步MDL快速讀數(shù)目;ULONG; FastMdlReadWait;//同步MDL快速讀數(shù)目;ULONG; FastMdlReadResourceMiss;//MDL讀資源沖突數(shù);ULONG; FastMdlReadNotPossible; //MDL讀失敗數(shù);ULONG; MapDataNoWait;; //異步映射數(shù)據(jù)次數(shù);ULONG; MapDataWait;//同步映射數(shù)據(jù)次數(shù);ULONG; MapDataNoWaitMiss;; //異步映射數(shù)據(jù)沖突次數(shù);ULONG; MapDataWaitMiss;//同步映射數(shù)據(jù)沖突次數(shù);ULONG; PinMappedDataCount; //牽制映射數(shù)據(jù)數(shù)目;ULONG; PinReadNoWait;; //牽制異步讀數(shù)目;ULONG; PinReadWait;//牽制同步讀數(shù)目;ULONG; PinReadNoWaitMiss;; //牽制異步讀沖突數(shù)目;ULONG; PinReadWaitMiss;//牽制同步讀沖突數(shù)目;ULONG; CopyReadNoWait; //異步拷貝讀次數(shù);ULONG; CopyReadWait;//同步拷貝讀次數(shù);ULONG; CopyReadNoWaitMiss; //異步拷貝讀故障次數(shù);ULONG; CopyReadWaitMiss;//同步拷貝讀故障次數(shù);ULONG; MdlReadNoWait;; //異步MDL讀次數(shù);ULONG; MdlReadWait;//同步MDL讀次數(shù);ULONG; MdlReadNoWaitMiss;; //異步MDL讀故障次數(shù);ULONG; MdlReadWaitMiss;//同步MDL讀故障次數(shù);ULONG; ReadAheadIos;//向前讀操作數(shù)目;ULONG; LazyWriteIos;//LAZY寫操作數(shù)目;ULONG; LazyWritePages; //LAZY寫頁文件數(shù)目;ULONG; DataFlushes;//緩存刷新次數(shù);ULONG; DataPages;; //緩存刷新頁數(shù);ULONG; ContextSwitches;//環(huán)境切換數(shù)目;ULONG; FirstLevelTbFills;; //第一層緩沖區(qū)填充次數(shù);ULONG; SecondLevelTbFills; //第二層緩沖區(qū)填充次數(shù);ULONG; SystemCall; //系統(tǒng)調用次數(shù);}SYSTEM_PERFORMANCE_INFORMATION,*PSYSTEM_PERFORMANCE_INFORMATION;

現(xiàn)在看到的是結構SYSTEM_PROCESSOR_TIMES提供的系統(tǒng)處理器的使用情況,包括各種情況下的使用時間及中斷數(shù)目:

typedef struct __SYSTEM_PROCESSOR_TIMES{LARGE_INTEGER IdleTime;//空閑時間;LARGE_INTEGER KernelTime; //內核模式時間;LARGE_INTEGER UserTime;//用戶模式時間;LARGE_INTEGER DpcTime;//延遲過程調用時間;LARGE_INTEGER InterruptTime;; //中斷時間;ULONG InterruptCount; //中斷次數(shù);}SYSTEM_PROCESSOR_TIMES,*PSYSTEM_PROCESSOR_TIMES;

頁文件的使用情況,SYSTEM_PAGEFILE_INFORMATION提供了所需的相關信息:

typedef struct _SYSTEM_PAGEFILE_INFORMATION{ULONG NetxEntryOffset;//下一個結構的偏移量;ULONG CurrentSize;//當前頁文件大小;ULONG TotalUsed;; //當前使用的頁文件數(shù);ULONG PeakUsed;//當前使用的頁文件峰值數(shù);UNICODE_STRING FileName;; //頁文件的文件名稱;}SYSTEM_PAGEFILE_INFORMATION,*PSYSTEM_PAGEFILE_INFORMATION;

系統(tǒng)高速緩存的使用情況參見結構SYSTEM_CACHE_INFORMATION提供的信息:

typedef struct _SYSTEM_CACHE_INFORMATION{ULONG SystemCacheWsSize;; //高速緩存大小;ULONG SystemCacheWsPeakSize;; //高速緩存峰值大小;ULONG SystemCacheWsFaults;//高速緩存頁故障數(shù)目;ULONG SystemCacheWsMinimum;//高速緩存最小頁大小;ULONG SystemCacheWsMaximum;//高速緩存最大頁大小;ULONG TransitionSharedPages;; //共享頁數(shù)目;ULONG TransitionSharedPagesPeak;; //共享頁峰值數(shù)目;ULONG Reserved[2];}SYSTEM_CACHE_INFORMATION,*PSYSTEM_CACHE_INFORMATION;

附錄:(所有完整源代碼,您可以到我們FZ5FZ的主頁下載)。

1.T-PMList的頭文件源代碼:

#ifndef T_PMLIST_H#define T_PMLIST_H

#include <windows.h>#include <stdio.h>

#define NT_PROCESSTHREAD_INFO0x05#define MAX_INFO_BUF_LEN 0x500000#define STATUS_SUCCESS((NTSTATUS)0x00000000L)#define STATUS_INFO_LENGTH_MISMATCH; ((NTSTATUS)0xC0000004L)

typedef LONG NTSTATUS;

typedef struct _LSA_UNICODE_STRING{USHORT; Length;USHORT; MaximumLength;PWSTRBuffer;}LSA_UNICODE_STRING,*PLSA_UNICODE_STRING;typedef LSA_UNICODE_STRING UNICODE_STRING, *PUNICODE_STRING;

typedef struct _CLIENT_ID{HANDLE UniqueProcess;HANDLE UniqueThread;}CLIENT_ID;typedef CLIENT_ID *PCLIENT_ID;

typedef LONG KPRIORITY;

typedef struct _VM_COUNTERS{ULONG PeakVirtualSize;ULONG VirtualSize;ULONG PageFaultCount;ULONG PeakWorkingSetSize;ULONG WorkingSetSize;ULONG QuotaPeakPagedPoolUsage;ULONG QuotaPagedPoolUsage;ULONG QuotaPeakNonPagedPoolUsage;ULONG QuotaNonPagedPoolUsage;ULONG PagefileUsage;ULONG PeakPagefileUsage;}VM_COUNTERS,*PVM_COUNTERS;

typedef struct _IO_COUNTERS{LARGE_INTEGER ReadOperationCount;LARGE_INTEGER WriteOperationCount;LARGE_INTEGER OtherOperationCount;LARGE_INTEGER ReadTransferCount;LARGE_INTEGER WriteTransferCount;LARGE_INTEGER OtherTransferCount;}IO_COUNTERS,*PIO_COUNTERS;

typedef enum _THREAD_STATE{StateInitialized,StateReady,StateRunning,StateStandby,StateTerminated,StateWait,StateTransition,StateUnknown}THREAD_STATE;

typedef enum _KWAIT_REASON{Executive,FreePage,PageIn,PoolAllocation,DelayExecution,Suspended,UserRequest,WrExecutive,WrFreePage,WrPageIn,WrPoolAllocation,WrDelayExecution,WrSuspended,WrUserRequest,WrEventPair,WrQueue,WrLpcReceive,WrLpcReply,WrVertualMemory,WrPageOut,WrRendezvous,Spare2,Spare3,Spare4,Spare5,Spare6,WrKernel}KWAIT_REASON;

typedef struct _SYSTEM_THREADS{LARGE_INTEGER KernelTime;LARGE_INTEGER UserTime;LARGE_INTEGER CreateTime;ULONG WaitTime;PVOID StartAddress;CLIENT_ID ClientId;KPRIORITY Priority;KPRIORITY BasePriority;ULONG ContextSwitchCount;THREAD_STATE; State;KWAIT_REASON; WaitReason;}SYSTEM_THREADS,*PSYSTEM_THREADS;

typedef struct _SYSTEM_PROCESSES{ULONG; NextEntryDelta;ULONG; ThreadCount;ULONG; Reserved1[6];LARGE_INTEGER; CreateTime;LARGE_INTEGER; UserTime;LARGE_INTEGER; KernelTime;UNICODE_STRING ProcessName;KPRIORITY; BasePriority;ULONG; ProcessId;ULONG; InheritedFromProcessId;ULONG; HandleCount;ULONG; Reserved2[2];VM_COUNTERSVmCounters;IO_COUNTERSIoCounters;SYSTEM_THREADS Threads[1];}SYSTEM_PROCESSES,*PSYSTEM_PROCESSES;

typedef DWordSYSTEM_INFORMATION_CLASS;typedef NTSTATUS (__stdcall *NTQUERYSYSTEMINFORMATION) (IN SYSTEM_INFORMATION_CLASS,IN OUT PVOID,IN ULONG,OUTPULONG OPTIONAL);NTQUERYSYSTEMINFORMATION NtQuerySystemInformation;

DWORD EnumProcess(){PSYSTEM_PROCESSES; pSystemProc;HMODULEhNtDll = NULL;LPVOID lpSystemInfo= NULL;DWORD; dwNumberBytes; = MAX_INFO_BUF_LEN;DWORD; dwTotalProcess = 0;DWORD; dwReturnLength;NTSTATUSStatus; LONGLONGllTempTime;

__try{hNtDll = LoadLibrary('NtDll.dll');if(hNtDll == NULL){printf('LoadLibrary Error: %dn',GetLastError());__leave;}

NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProCADdress(hNtDll,'NtQuerySystemInformation');; if(NtQuerySystemInformation == NULL){printf('GetProcAddress for NtQuerySystemInformation Error: %dn',GetLastError());__leave;}

lpSystemInfo = (LPVOID)malloc(dwNumberBytes);Status = NtQuerySystemInformation(NT_PROCESSTHREAD_INFO,lpSystemInfo,dwNumberBytes,&dwReturnLength);if(Status == STATUS_INFO_LENGTH_MISMATCH){printf('STATUS_INFO_LENGTH_MISMATCHn');__leave;}else if(Status != STATUS_SUCCESS){printf('NtQuerySystemInformation Error: %dn',GetLastError());__leave;}

printf('%-20s%6s%7s%8s%6s%7s%7s%13sn','ProcessName','PID','PPID','WsSize','Prio.','Thread','Handle','CPU Time');printf('--------------------------------------------------------------------------n');pSystemProc = (PSYSTEM_PROCESSES)lpSystemInfo;while(pSystemProc->NextEntryDelta != 0){if(pSystemProc->ProcessId != 0){wprintf(L'%-20s',pSystemProc->ProcessName.Buffer);}else{wprintf(L'%-20s',L'System Idle Process');}printf('%6d',pSystemProc->ProcessId);printf('%7d',pSystemProc->InheritedFromProcessId);printf('%7dK',pSystemProc->VmCounters.WorkingSetSize/1024);printf('%6d',pSystemProc->BasePriority);printf('%7d',pSystemProc->ThreadCount);printf('%7d',pSystemProc->HandleCount);llTempTime; = pSystemProc->KernelTime.QuadPart + pSystemProc->UserTime.QuadPart;llTempTime /= 10000;printf('%3d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d:',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 1000;printf('%.3d',llTempTime);

printf('n');dwTotalProcess ++;pSystemProc = (PSYSTEM_PROCESSES)((char *)pSystemProc + pSystemProc->NextEntryDelta);}printf('--------------------------------------------------------------------------n');printf('nTotal %d Process(es) !nn',dwTotalProcess);printf('PIDt ==> Process Identificationn');printf('PPIDt ==> Parent Process Identificationn');printf('WsSizet ==> Working Set Sizen');printf('Prio.t ==> Base Priorityn');printf('Threadt ==> Thread Countn');printf('Handlet ==> Handle Countn');printf('CPU Time ==> Processor Timen');}__finally{if(lpSystemInfo != NULL){free(lpSystemInfo);}if(hNtDll != NULL){FreeLibrary(hNtDll);}}

return 0;}

DWORD SpeciProcess(DWORD dwPID){PSYSTEM_PROCESSES; pSystemProc= NULL;PSYSTEM_THREADSpSystemThre= NULL;; HMODULEhNtDll = NULL;LPVOID lpSystemInfo= NULL;DWORD; dwNumberBytes; = MAX_INFO_BUF_LEN;DWORD; dwTotalProcess = 0;DWORD; dwReturnLength;NTSTATUSStatus; LONGLONGllTempTime;ULONG; ulIndex;

__try{hNtDll = LoadLibrary('NtDll.dll');if(hNtDll == NULL){printf('LoadLibrary Error: %dn',GetLastError()); __leave;}

NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(hNtDll,'NtQuerySystemInformation'); if(NtQuerySystemInformation == NULL){printf('GetProcAddress for NtQuerySystemInformation Error: %dn',GetLastError());__leave;}

lpSystemInfo = (LPVOID)malloc(dwNumberBytes);Status = NtQuerySystemInformation(NT_PROCESSTHREAD_INFO,lpSystemInfo,dwNumberBytes,&dwReturnLength);if(Status == STATUS_INFO_LENGTH_MISMATCH){printf('STATUS_INFO_LENGTH_MISMATCHn');__leave;}else if(Status != STATUS_SUCCESS){printf('NtQuerySystemInformation Error: %dn',GetLastError());__leave;}

pSystemProc = (PSYSTEM_PROCESSES)lpSystemInfo;while(pSystemProc->NextEntryDelta != 0){if(pSystemProc->ProcessId == dwPID){printf('ProcessName:tt ');if(pSystemProc->ProcessId != 0){wprintf(L'%-20sn',pSystemProc->ProcessName.Buffer);}else{wprintf(L'%-20sn',L'System Idle Process');}printf('ProcessID:tt %dtt',pSystemProc->ProcessId);printf('ParentProcessID:t%dn',pSystemProc->InheritedFromProcessId);

printf('KernelTime:tt ');llTempTime; = pSystemProc->KernelTime.QuadPart;llTempTime /= 10000;printf('%d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d:',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 1000;printf('%.3dt',llTempTime);

printf('UserTime:tt');llTempTime; = pSystemProc->UserTime.QuadPart;llTempTime /= 10000;printf('%d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d:',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 1000;printf('%.3dn',llTempTime);

printf('Privilege:tt %d%%tt',(pSystemProc->KernelTime.QuadPart * 100)/(pSystemProc->KernelTime.QuadPart + pSystemProc->UserTime.QuadPart));printf('User:ttt%d%%n',(pSystemProc->UserTime.QuadPart * 100)/(pSystemProc->KernelTime.QuadPart + pSystemProc->UserTime.QuadPart));

printf('ThreadCount:tt %dtt',pSystemProc->ThreadCount);printf('HandleCount:tt%dn',pSystemProc->HandleCount);

printf('BasePriority:tt %-2dtt',pSystemProc->BasePriority);printf('PageFaultCount:tt%dnn',pSystemProc->VmCounters.PageFaultCount);

printf('PeakWorkingSetSize(K):t %-8dt',pSystemProc->VmCounters.PeakWorkingSetSize/1024);printf('WorkingSetSize(K):t%-8dn',pSystemProc->VmCounters.WorkingSetSize/1024);

printf('PeakPagedPool(K):t %-8dt',pSystemProc->VmCounters.QuotaPeakPagedPoolUsage/1024);printf('PagedPool(K):tt%-8dn',pSystemProc->VmCounters.QuotaPagedPoolUsage/1024);

printf('PeakNonPagedPook(K):t %-8dt',pSystemProc->VmCounters.QuotaPeakNonPagedPoolUsage/1024);printf('NonePagedPook(K):t%-8dn',pSystemProc->VmCounters.QuotaNonPagedPoolUsage/1024);

printf('PeakPagefile(K):t %-8dt',pSystemProc->VmCounters.PeakPagefileUsage/1024);printf('Pagefile(K):tt%-8dn',pSystemProc->VmCounters.PagefileUsage/1024);

printf('PeakVirtualSize(K):t %-8dt',pSystemProc->VmCounters.PeakVirtualSize/1024);printf('VirtualSize(K):tt%-8dnn',pSystemProc->VmCounters.VirtualSize/1024);

printf('ReadTransfer:tt %-8dt',pSystemProc->IoCounters.ReadTransferCount);printf('ReadOperationCount:t%-8dn',pSystemProc->IoCounters.ReadOperationCount);

printf('WriteTransfer:tt %-8dt',pSystemProc->IoCounters.WriteTransferCount);printf('WriteOperationCount:t%-8dn',pSystemProc->IoCounters.WriteOperationCount);

printf('OtherTransfer:tt %-8dt',pSystemProc->IoCounters.OtherTransferCount);printf('OtherOperationCount:t%-8dnn',pSystemProc->IoCounters.OtherOperationCount);

printf('%-5s%3s%4s%5s%5s%11s%12s%12s%7s%6s%9sn','TID','Pri','BPr','Priv','User','KernelTime','UserTime','StartAddr','CSwitC','State','WtReason');printf('-------------------------------------------------------------------------------n');

for(ulIndex = 0; ulIndex < pSystemProc->ThreadCount; ulIndex++){pSystemThre = &pSystemProc->Threads[ulIndex];printf('%-5d',pSystemProc->Threads[ulIndex].ClientId.UniqueThread);

printf('%3d',pSystemProc->Threads[ulIndex].Priority);printf('%4d',pSystemProc->Threads[ulIndex].BasePriority);

printf('%4d%%',(pSystemProc->Threads[ulIndex].KernelTime.QuadPart * 100)/(pSystemProc->KernelTime.QuadPart + pSystemProc->UserTime.QuadPart)); printf('%4d%%',(pSystemProc->Threads[ulIndex].UserTime.QuadPart * 100)/(pSystemProc->KernelTime.QuadPart + pSystemProc->UserTime.QuadPart));

llTempTime; = pSystemProc->Threads[ulIndex].KernelTime.QuadPart;llTempTime /= 10000;printf('%2d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d.',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 100;printf('%.2d ',llTempTime);

llTempTime; = pSystemProc->Threads[ulIndex].UserTime.QuadPart;llTempTime /= 10000;printf('%2d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d.',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 100;printf('%.2d ',llTempTime);

printf(' 0x%.8X',pSystemProc->Threads[ulIndex].StartAddress);printf('%7d',pSystemProc->Threads[ulIndex].ContextSwitchCount);

switch(pSystemProc->Threads[ulIndex].State){case StateInitialized:printf('%6s','Init.');break;case StateReady:printf('%6s','Ready');break;case StateRunning:printf('%6s','Run');break;case StateStandby:printf('%6s','StBy.');break;case StateTerminated:printf('%6s','Term.');break;case StateWait:printf('%6s','Wait');break;case StateTransition:printf('%6s','Tran.');break;case StateUnknown:printf('%6s','Unkn.');break;default:printf('%6s','Unkn.');break;}

switch(pSystemProc->Threads[ulIndex].WaitReason){case Executive:printf(' %-8s','Executi.');break;case FreePage:printf(' %-8s','FreePag.');break;case PageIn:printf(' %-8s','PageIn');break;case PoolAllocation:printf(' %-8s','PoolAll.');break;case DelayExecution:printf(' %-8s','DelayEx.');break;case Suspended:printf(' %-8s','Suspend.');break;case UserRequest:printf(' %-8s','UserReq.');break;case WrExecutive:printf(' %-8s','WrExect.');break;case WrFreePage:printf(' %-8s','WrFrePg.');break;case WrPageIn:printf(' %-8s','WrPageIn');break;case WrPoolAllocation:printf(' %-8s','WrPoolA.');break;case WrSuspended:printf(' %-8s','WrSuspe.');break;case WrUserRequest:printf(' %-8s','WrUsReq.');break;case WrEventPair:printf(' %-8s','WrEvent.');break;case WrQueue:printf(' %-8s','WrQueue');break;case WrLpcReceive:printf(' %-8s','WrLpcRv.');break;case WrLpcReply:printf(' %-8s','WrLpcRp.');break;case WrVertualMemory:printf(' %-8s','WrVerMm.');break;case WrPageOut:printf(' %-8s','WrPgOut.');break;case WrRendezvous:printf(' %-8s','WrRende.');break;case WrKernel:printf(' %-8s','WrKernel');break;default:printf(' %-8s','Unknown');break;}printf('n');}printf('-------------------------------------------------------------------------------nn');; printf('Total %d Thread(s) !nn',ulIndex);

dwTotalProcess ++;break;}pSystemProc = (PSYSTEM_PROCESSES)((char *)pSystemProc + pSystemProc->NextEntryDelta);}}__finally{if(dwTotalProcess == 0){printf('Could not found the %d Process !n',dwPID);}else{printf('TID:tt====>tThread Identificationn');printf('Pri:tt====>tPriorityn');printf('BPr:tt====>tBase Priorityn');printf('Priv:tt====>tPrivilegen');printf('StartAddr:t====>tThread Start Addressn');printf('CSwitC:tt====>tContext Switch Countn');printf('WtReason:t====>tWait Reasonn');}if(lpSystemInfo != NULL){free(lpSystemInfo);}if(hNtDll != NULL){FreeLibrary(hNtDll);}}

return 0;}

VOID Start(){printf('T-PMList, by TOo2yn');printf('E-mail: TOo2y@safechina.netn');printf('HomePage: www.safechina.netn');printf('Date: 05-10-2003nn');return ;}

VOID Usage(){printf('Usage:tT-PMList; [-e] │ [-s PID]n'); printf('; -et; Enumerate All Processesn');printf('; -s PID; Show Special Process Information with PIDnn');return ;}

#endif

2.T-PMPerf的頭文件源代碼:

#ifndef T_PMPERF_H#define T_PMPERF_H

#include 'windows.h'#include 'stdio.h'

#define SYSTEM_PERF_INFO 0x02#define SYSTEM_PROC_TIME 0x08#define SYSTEM_PAGE_INFO 0x12#define SYSTEM_CACHE_INFO0x15#define MAX_INFO_BUF_LEN 0x500000#define STATUS_SUCCESS((NTSTATUS)0x00000000L)

typedef LONG; NTSTATUS;typedef DWORD SYSTEM_INFORMATION_CLASS;

typedef struct _LSA_UNICODE_STRING{USHORT; Length;USHORT; MaximumLength;PWSTRBuffer;}LSA_UNICODE_STRING,*PLSA_UNICODE_STRING;typedef LSA_UNICODE_STRING UNICODE_STRING, *PUNICODE_STRING;

typedef struct _SYSTEM_PERFORMANCE_INFORMATION{LARGE_INTEGER; IdleTime;LARGE_INTEGER; ReadTransferCount;LARGE_INTEGER; WriteTransferCount;LARGE_INTEGER; OtherTransferCount;ULONG; ReadOperationCount;ULONG; WriteOperationCount;ULONG; OtherOperationCount;ULONG; AvailablePages;ULONG; TotalCommittedPages;ULONG; TotalCommitLimit;ULONG; PeakCommitment;ULONG; PageFaults;ULONG; WriteCopyFaults;ULONG; TransitionFaults;ULONG; Reserved1;ULONG; DemandZeroFaults;ULONG; PagesRead;ULONG; PageReadIos;ULONG; Reserved2[2];ULONG; PagefilePagesWritten;ULONG; PagefilePageWriteIos;ULONG; MappedFilePagesWritten;ULONG; MappedFileWriteIos;ULONG; PagedPoolUsage;ULONG; NonPagedPoolUsage;ULONG; PagedPoolAllocs;ULONG; PagedPoolFrees;ULONG; NonPagedPoolAllocs;ULONG; NonPagedPoolFress;ULONG; TotalFreeSystemPtes;ULONG; SystemCodePage;ULONG; TotalSystemDriverPages;ULONG; TotalSystemCodePages;ULONG; SmallNonPagedLookasideListAllocateHits;ULONG; SmallPagedLookasideListAllocateHits;ULONG; Reserved3;ULONG; MmSystemCachePage;ULONG; PagedPoolPage;ULONG; SystemDriverPage;ULONG; FastReadNoWait;ULONG; FastReadWait;ULONG; FastReadResourceMiss;ULONG; FastReadNotPossible;ULONG; FastMdlReadNoWait;ULONG; FastMdlReadWait;ULONG; FastMdlReadResourceMiss;ULONG; FastMdlReadNotPossible;ULONG; MapDataNoWait;ULONG; MapDataWait;ULONG; MapDataNoWaitMiss;ULONG; MapDataWaitMiss;ULONG; PinMappedDataCount;ULONG; PinReadNoWait;ULONG; PinReadWait;ULONG; PinReadNoWaitMiss;ULONG; PinReadWaitMiss;ULONG; CopyReadNoWait;ULONG; CopyReadWait;ULONG; CopyReadNoWaitMiss;ULONG; CopyReadWaitMiss;ULONG; MdlReadNoWait;ULONG; MdlReadWait;ULONG; MdlReadNoWaitMiss;ULONG; MdlReadWaitMiss;ULONG; ReadAheadIos;ULONG; LazyWriteIos;ULONG; LazyWritePages;ULONG; DataFlushes;ULONG; DataPages;ULONG; ContextSwitches;ULONG; FirstLevelTbFills;ULONG; SecondLevelTbFills;ULONG; SystemCall;}SYSTEM_PERFORMANCE_INFORMATION,*PSYSTEM_PERFORMANCE_INFORMATION;

typedef struct __SYSTEM_PROCESSOR_TIMES{LARGE_INTEGER IdleTime;LARGE_INTEGER KernelTime;LARGE_INTEGER UserTime;LARGE_INTEGER DpcTime;LARGE_INTEGER InterruptTime;ULONG InterruptCount;}SYSTEM_PROCESSOR_TIMES,*PSYSTEM_PROCESSOR_TIMES;

typedef struct _SYSTEM_PAGEFILE_INFORMATION{ULONG NetxEntryOffset;ULONG CurrentSize;ULONG TotalUsed;ULONG PeakUsed;UNICODE_STRING FileName;}SYSTEM_PAGEFILE_INFORMATION,*PSYSTEM_PAGEFILE_INFORMATION;

typedef struct _SYSTEM_CACHE_INFORMATION{ULONG SystemCacheWsSize;ULONG SystemCacheWsPeakSize;ULONG SystemCacheWsFaults;ULONG SystemCacheWsMinimum;ULONG SystemCacheWsMaximum;ULONG TransitionSharedPages;ULONG TransitionSharedPagesPeak;ULONG Reserved[2];}SYSTEM_CACHE_INFORMATION,*PSYSTEM_CACHE_INFORMATION;

typedef NTSTATUS (__stdcall * NTQUERYSYSTEMINFORMATION) (IN SYSTEM_INFORMATION_CLASS,IN OUT PVOID,INTULONG,OUTPULONG OPTION);NTQUERYSYSTEMINFORMATION NtQuerySystemInformation;

DWORD PerfInfo(){SYSTEM_PERFORMANCE_INFORMATION SystemPerfInfo;HMODULE hNtDll = NULL;DWORDdwNumberBytes;DWORDdwReturnLength;NTSTATUSStatus;LONGLONGllTempTime;

__try{hNtDll = LoadLibrary('NtDll.dll');if(hNtDll == NULL){printf('LoadLibrary Error: %dn',GetLastError());; __leave;}

NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(hNtDll,'NtQuerySystemInformation');if(NtQuerySystemInformation == NULL){printf('GetProcAddress for NtQuerySystemInformation Error: %dn',GetLastError());__leave;}

dwNumberBytes = sizeof(SYSTEM_PERFORMANCE_INFORMATION);Status = NtQuerySystemInformation(SYSTEM_PERF_INFO,&SystemPerfInfo,dwNumberBytes,&dwReturnLength);if(Status != STATUS_SUCCESS){printf('NtQuerySystemInformation for Performance Error: %dn',GetLastError());__leave;}

printf('IdleTime:tt');llTempTime; = SystemPerfInfo.IdleTime.QuadPart;llTempTime /= 10000;printf('%d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d:',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 1000;printf('%.3dn',llTempTime);

printf('ReadOperationCount:t%-10dt',SystemPerfInfo.ReadOperationCount);printf('ReadTransferCount:t%dn',SystemPerfInfo.ReadTransferCount);printf('WriteOperationCount:t%-10dt',SystemPerfInfo.WriteOperationCount);printf('WriteTransferCount:t%dn',SystemPerfInfo.WriteTransferCount);printf('OtherOperationCount:t%-10dt',SystemPerfInfo.OtherOperationCount);printf('OtherTransferCount:t%dn',SystemPerfInfo.OtherTransferCount);

printf('AvailablePages:tt%-10dt',SystemPerfInfo.AvailablePages);printf('TotalCommittedPage:t%dn',SystemPerfInfo.TotalCommittedPages);printf('CommitLimit:tt%-10dt',SystemPerfInfo.TotalCommitLimit);printf('PeakCommitment:tt%dn',SystemPerfInfo.PeakCommitment);

printf('PageFault:tt%-10dt',SystemPerfInfo.PageFaults);printf('WriteCopyFault:tt%dn',SystemPerfInfo.WriteCopyFaults);printf('TransitionFault:t%-10dt',SystemPerfInfo.TransitionFaults);printf('DemandZeroFault:t%dn',SystemPerfInfo.DemandZeroFaults);

printf('PagesRead:tt%-10dt',SystemPerfInfo.PagesRead);printf('PageReadIos:tt%dn',SystemPerfInfo.PageReadIos);printf('PagesWritten:tt%-10dt',SystemPerfInfo.PagefilePagesWritten);printf('PageWriteIos:tt%dn',SystemPerfInfo.PagefilePageWriteIos);printf('MappedFilePagesWritten:t%-10dt',SystemPerfInfo.MappedFilePagesWritten);printf('MappedFileWriteIos:t%dn',SystemPerfInfo.MappedFileWriteIos);

printf('PagedPoolUsage:tt%-10dt',SystemPerfInfo.PagedPoolUsage);printf('NonPagedPoolUsage:t%dn',SystemPerfInfo.NonPagedPoolUsage);printf('PagedPoolAllocs:t%-10dt',SystemPerfInfo.PagedPoolAllocs);printf('NonPagedPoolAllocs:t%dn',SystemPerfInfo.NonPagedPoolAllocs);printf('PagedPoolFrees:tt%-10dt',SystemPerfInfo.PagedPoolFrees);printf('NonPagedPoolFrees:t%dn',SystemPerfInfo.NonPagedPoolFress);

printf('SystemCodePage:tt%-10dt',SystemPerfInfo.SystemCodePage);printf('TotalSystemCodePage:t%dn',SystemPerfInfo.TotalSystemCodePages);printf('TotalFreeSysPTE:t%-10dt',SystemPerfInfo.TotalFreeSystemPtes);printf('TotalSystemDriverPages:t%dn',SystemPerfInfo.TotalSystemDriverPages);printf('PagedPoolPage:tt%-10dt',SystemPerfInfo.PagedPoolPage);printf('SystemDriverPage:t%dn',SystemPerfInfo.SystemDriverPage);

printf('FastReadWait:tt%-10dt',SystemPerfInfo.FastReadWait);printf('FastReadNoWait:tt%dn',SystemPerfInfo.FastReadNoWait);printf('FastReadNoPossible:t%-10dt',SystemPerfInfo.FastReadNotPossible);printf('FastReadResourceMiss:t%dn',SystemPerfInfo.FastReadResourceMiss);printf('FastMdlReadWait:t%-10dt',SystemPerfInfo.FastMdlReadWait);printf('FastMdlReadNoWait:t%dn',SystemPerfInfo.FastMdlReadNoWait);printf('FastMdlReadNotPossible:t%-10dt',SystemPerfInfo.FastMdlReadNotPossible);printf('FastMdlReadResourceMiss:%dn',SystemPerfInfo.FastMdlReadResourceMiss);

printf('MapDataWait:tt%-10dt',SystemPerfInfo.MapDataWait);printf('MapDataNoWait:tt%dn',SystemPerfInfo.MapDataNoWait);printf('MapDataWaitMiss:t%-10dt',SystemPerfInfo.MapDataWaitMiss);printf('MapDataNoWaitMiss:t%dn',SystemPerfInfo.MapDataNoWaitMiss);

printf('ReadAheadIos:tt%-10dt',SystemPerfInfo.ReadAheadIos);printf('PinMappedDataCount:t%dn',SystemPerfInfo.PinMappedDataCount);printf('PinReadWait:tt%-10dt',SystemPerfInfo.PinReadWait);printf('PinReadNoWait:tt%dn',SystemPerfInfo.PinReadNoWait);printf('PinReadWaitMiss:t%-10dt',SystemPerfInfo.PinReadWaitMiss);printf('PinReadNoWaitMiss:t%dn',SystemPerfInfo.PinReadNoWaitMiss);

printf('CopyReadWait:tt%-10dt',SystemPerfInfo.CopyReadWait);printf('CopyReadNoWait:tt%dn',SystemPerfInfo.CopyReadNoWait);printf('CopyReadWaitMiss:t%-10dt',SystemPerfInfo.CopyReadWaitMiss);printf('CopyReadNoWaitMiss:t%-10dn',SystemPerfInfo.CopyReadNoWaitMiss);printf('MdlReadWait:tt%-10dt',SystemPerfInfo.MdlReadWait);printf('MdlReadNoWait:tt%dn',SystemPerfInfo.MdlReadNoWait);printf('MdlReadWaitMiss:t%-10dt',SystemPerfInfo.MdlReadWaitMiss);printf('MdlReadNoWaitMiss:t%dn',SystemPerfInfo.MdlReadNoWaitMiss);

printf('LazyWriteIos:tt%-10dt',SystemPerfInfo.LazyWriteIos);printf('LazyWritePages:tt%dn',SystemPerfInfo.LazyWritePages);printf('DataPages:tt%-10dt',SystemPerfInfo.DataPages);printf('DataFlushes:tt%dn',SystemPerfInfo.DataFlushes);printf('FirstLevelTbFills:t%-10dt',SystemPerfInfo.FirstLevelTbFills);printf('SecondLevelTbFills:t%dn',SystemPerfInfo.SecondLevelTbFills);printf('ContextSwitches:t%-10dt',SystemPerfInfo.ContextSwitches);printf('SytemCall:tt%dn',SystemPerfInfo.SystemCall);

printf('MemorySystemCachePage:ttt%dn',SystemPerfInfo.MmSystemCachePage);printf('SmallPagedLookasideListAllocateHits:t%dn',SystemPerfInfo.SmallPagedLookasideListAllocateHits);printf('SmallNonPagedLookasideListAllocateHits:t%dn',SystemPerfInfo.SmallNonPagedLookasideListAllocateHits);

}__finally{if(hNtDll != NULL){FreeLibrary(hNtDll);}}

return 0;}

DWORD ProcTime(){SYSTEM_PROCESSOR_TIMES; SystemProcTime;HMODULE hNtDll = NULL;DWORDdwNumberBytes;DWORDdwReturnLength;NTSTATUSStatus;LONGLONGllTempTime;

__try{hNtDll = LoadLibrary('NtDll.dll');if(hNtDll == NULL){ printf('LoadLibrary Error: %dn',GetLastError());__leave;}

NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(hNtDll,'NtQuerySystemInformation');if(NtQuerySystemInformation == NULL){printf('GetProcAddress for NtQuerySystemInformation Error: %dn',GetLastError());__leave;}

dwNumberBytes = sizeof(SYSTEM_PROCESSOR_TIMES);NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(hNtDll,'NtQuerySystemInformation');if(NtQuerySystemInformation == NULL){printf('GetProcAddress Error: %dn',GetLastError());__leave;}

Status = NtQuerySystemInformation(SYSTEM_PROC_TIME,&SystemProcTime,dwNumberBytes,&dwReturnLength);if(Status != STATUS_SUCCESS){printf('NtQuerySystemInformation for Processor Time Error: %dn',GetLastError());__leave;}

printf('IdleTime:tt');llTempTime; = SystemProcTime.IdleTime.QuadPart;llTempTime /= 10000;printf('%d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d:',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 1000;printf('%.3dn',llTempTime);

printf('KernelTime:tt');llTempTime; = SystemProcTime.KernelTime.QuadPart;llTempTime /= 10000;printf('%d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d:',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 1000;printf('%.3dn',llTempTime);

printf('UserTime:tt');llTempTime; = SystemProcTime.UserTime.QuadPart;llTempTime /= 10000;printf('%d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d:',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 1000;printf('%.3dn',llTempTime);

printf('DpcTime:tt');llTempTime; = SystemProcTime.DpcTime.QuadPart;llTempTime /= 10000;printf('%d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d:',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 1000;printf('%.3dn',llTempTime);

printf('InterruptTime:tt');llTempTime; = SystemProcTime.InterruptTime.QuadPart;llTempTime /= 10000;printf('%d:',llTempTime/(60*60*1000));llTempTime %= 60*60*1000;printf('%.2d:',llTempTime/(60*1000));llTempTime %= 60*1000;printf('%.2d.',llTempTime/1000);llTempTime %= 1000;printf('%.3dn',llTempTime);

printf('InterruptCount:tt%dn',SystemProcTime.InterruptCount);

}__finally{if(hNtDll != NULL){FreeLibrary(hNtDll);}}

return 0;}

DWORD PagefileInfo(){PSYSTEM_PAGEFILE_INFORMATIONpSystemPagefileInfo;PVOID; pBuffer;HMODULEhNtDll = NULL;DWORD; dwNumberBytes;DWORD; dwReturnLength;NTSTATUSStatus;

__try{hNtDll = LoadLibrary('NtDll.dll');if(hNtDll == NULL){ printf('LoadLibrary Error: %dn',GetLastError());__leave;}

NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(hNtDll,'NtQuerySystemInformation');if(NtQuerySystemInformation == NULL){printf('GetProcAddress for NtQuerySystemInformation Error: %dn',GetLastError());__leave;}

dwNumberBytes = MAX_INFO_BUF_LEN;pBuffer = (LPVOID)malloc(dwNumberBytes);Status; = NtQuerySystemInformation(SYSTEM_PAGE_INFO,pBuffer,dwNumberBytes,&dwReturnLength);if(Status != STATUS_SUCCESS){printf('NtQuerySystemInformation for Pagefile Error: %dn',GetLastError());__leave;}

pSystemPagefileInfo = (PSYSTEM_PAGEFILE_INFORMATION)pBuffer;do{printf('CurrentPagefileSize:t%dn',pSystemPagefileInfo->CurrentSize);printf('TotalPagefileUsed:t%dn',pSystemPagefileInfo->TotalUsed);printf('PeakPagefileUsed:t%dn',pSystemPagefileInfo->PeakUsed);wprintf(L'PagefileFileName:t%sn',pSystemPagefileInfo->FileName.Buffer);

pSystemPagefileInfo = (PSYSTEM_PAGEFILE_INFORMATION)((char *)pBuffer + pSystemPagefileInfo->NetxEntryOffset);}while(pSystemPagefileInfo->NetxEntryOffset != 0);}__finally{if(pBuffer != NULL){free(pBuffer);} if(hNtDll; != NULL){FreeLibrary(hNtDll);}}

return 0;}

DWORD CacheInfo(){SYSTEM_CACHE_INFORMATIONSystemCacheInfo;HMODULEhNtDll = NULL;DWORD; dwNumberBytes;DWORD; dwReturnLength;NTSTATUSStatus;

__try{hNtDll = LoadLibrary('NtDll.dll');if(hNtDll == NULL){printf('LoadLibrary Error: %dn',GetLastError());__leave;}

NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(hNtDll,'NtQuerySystemInformation');if(NtQuerySystemInformation == NULL){printf('GetProcAddress for NtQuerySystemInformation Error: %dn',GetLastError());__leave;}

dwNumberBytes = sizeof(SYSTEM_CACHE_INFORMATION);Status; = NtQuerySystemInformation(SYSTEM_CACHE_INFO,;&SystemCacheInfo,dwNumberBytes,&dwReturnLength);if(Status != STATUS_SUCCESS){printf('NtQuerySystemInformation for Cache Error: %dn',GetLastError());__leave;}

printf('CacheWorkingSetSize:tt%d(KB)n',SystemCacheInfo.SystemCacheWsSize/1024);printf('CacheWorkingSetPeakSize:t%d(KB)n',SystemCacheInfo.SystemCacheWsPeakSize/1024);printf('CacheWorkingSetFaults:tt%dn',SystemCacheInfo.SystemCacheWsFaults);printf('CacheWorkingSetMinimum:tt%dn',SystemCacheInfo.SystemCacheWsMinimum);printf('CacheWorkingSetMaximum:tt%dn',SystemCacheInfo.SystemCacheWsMaximum);printf('TransitionSharedPages:tt%dn',SystemCacheInfo.TransitionSharedPages);printf('TransitionSharedPagesPeak:t%dn',SystemCacheInfo.TransitionSharedPagesPeak);

}__finally{if(hNtDll != NULL){FreeLibrary(hNtDll);}}

return 0;}

VOID Start(){printf('T-PMPerf, by TOo2yn');printf('E-mail: TOo2y@safechina.netn');printf('HomePage: www.safechina.netn');printf('Date: 05-09-2003nn');return ;}

VOID Usage(){printf('Usage:tT-PMPerf <Option>n');printf('Option:n');printf('; -PerfSystem Performance Informationn');printf('; -ProcSystem Processor Informationn');printf('; -PageSystem Pagefile Informationn');printf('; -Cache; System Cache Informationn');return ;}

#endif

Reference:

主站蜘蛛池模板: 成人国产精品久久久 | 99热首页 | 一区二区三区四区不卡视频 | 亚洲免费影院 | 欧美一级二级视频 | 亚洲 欧美 在线 一区 | 亚洲精品专区 | 国产成人免费视频 | 精品国产一区二区三区成人影院 | 免费的av网站 | 久久久xxxx | av中文字幕在线播放 | 日日日日干干干干 | 日本 国产 欧美 | 中文字幕亚洲精品 | 成人一区二区三区在线 | 久久99精品久久久久蜜臀 | 亚洲精品电影在线观看 | 宅男伊人| av在线网址观看 | 91久久综合| 中文字幕日韩欧美一区二区三区 | 国产高清不卡 | 免费在线一区二区 | 99re在线| 亚洲精品在线视频 | 一本一道久久a久久精品综合蜜臀 | 亚洲情综合五月天 | 涩涩视频观看 | av免费观看网站 | 亚洲成人精品 | 91.com在线| 欧美黄色一区 | 国产在线不卡 | 国产精品一区二区不卡 | 日韩成人高清电影 | 一区二区三区在线观看国产 | 亚洲免费在线观看 | 国产精品亚洲成在人线 | 亚洲欧美日韩另类精品一区二区三区 | 久久不射电影网 | 欧美嘿咻 | 乱人伦xxxx国语对白 | 国偷自产av一区二区三区 | 亚洲精品乱码久久久久久蜜糖图片 | 亚洲一区二区三区免费在线观看 | www久久99| 欧美日韩在线观看视频 | av在线一区二区三区 | 91精品国产综合久久婷婷香蕉 | 精品无人乱码一区二区三区 | 亚洲天堂一区二区 | 亚洲高清视频在线观看 | a黄视频 | 伊人青青久久 | ririsao久久精品一区 | 91天堂| 青青草99 | 亚洲成人免费电影 | 91久久久久久久久久久久久 | 天堂国产 | 91天天综合 | 国产亲子乱弄免费视频 | 99精品全国免费观看视频软件 | 日韩超级大片免费看国产国产播放器 | 久草日韩| 能免费看av的网站 | 在线观看国产视频 | 欧美日韩在线播放 | 一级片在线观看 | 粉嫩视频在线观看 | 欧美理论视频 | 2018国产大陆天天弄 | 在线久草| 久久av综合 | 中文在线a在线 | 亚洲另类视频 | 91麻豆精品国产91久久久资源速度 | 亚州成人 | 国产中文字幕在线观看 | 欧洲黄色 级黄色99片 | 精品国产一区二区三区久久久蜜月 | 日本一区二区三区在线视频 | 亚洲色图偷拍视频 | 97久久超碰 | 久久久久久久久久国产精品 | 国产精品一区二区在线看 | 91视频18| 精品国产不卡一区二区三区 | www婷婷 | 天天久久 | 国产精品久久一区二区三区 | 国产成人久久精品一区二区三区 | 四虎影音 | 日本在线一区二区 | 国产视频一区二区 | 亚洲成人久久久 | 日韩电影在线 | 韩国一区二区视频 | 国产毛片毛片 | 欧美在线视频一区二区 | 超级碰在线视频 | 日韩精品在线观看视频 | 亚洲成人高清 | 国产日产精品一区二区三区四区 | 日韩精品一区二区三区在线播放 | 久久av资源 | 最新日韩视频 | 欧美成人精品一区二区男人看 | 亚洲精品成人 | 久草日韩 | 99视频精品 | 犬夜叉在线观看 | 亚洲午夜av | 成人午夜精品一区二区三区 | 中文字幕亚洲在线 | 成人欧美 | 免费一区 | 亚洲国产精品久久久久 | 一区二区三区在线免费观看 | 欧美一级免费播放 | 久久亚洲一区二区三区四区 | a级网站在线观看 | 国产欧美一区二区精品性色 | 黄色片在线免费观看 | 久草最新 | www视频在线观看 | 成人影院在线 | 国产欧美视频在线 | 亚洲精品成人免费 | 国变精品美女久久久久av爽 | 亚洲精品字幕 | 精品国产91乱码一区二区三区 | 免费观看成人毛片 | 久久99这里只有精品 | 一本一道久久a久久精品综合蜜臀 | 成人免费看| 最新国产毛片 | 色综合久久久久 | 美女久久久 | 黄毛片视频 | 欧美精品一区二区三区一线天视频 | 国产精品一区二区三区在线 | 在线视频三级 | 午夜男人视频 | 亚洲视频免费看 | 精品久久久久久亚洲综合网 | 欧美久久精品 | 最新日韩在线观看视频 | 欧美午夜精品久久久久久浪潮 | 成人黄页在线观看 | 在线毛片观看 | 日韩av在线中文字幕 | 亚洲一区在线视频 | 日韩久久久久久久久久久 | 欧美日韩国产精品一区二区 | 日韩精品一二三区 | 亚洲免费小视频 | 久久亚洲黄色 | 亚洲成人免费在线 | 国产在线一区二区三区 | 成人在线 | 奇米影视77 | 全免一级毛片 | 中文字幕高清视频 | 婷婷在线观看视频 | 成人精品视频 | 国产精品美女久久久久久久久久久 | 成人免费xxxxxxx | 国产男女视频在线观看 | 成人国产 | 男女免费在线观看 | 成人在线视频播放 | 在线播放国产一区二区三区 | 亚洲午夜在线 | 日韩国产欧美视频 | 亚洲九九| 久久99深爱久久99精品 | 亚洲欧美一区二区三区在线 | 久久91久久久久麻豆精品 | 欧美三级在线 | 国产最好的av国产大片 | 六月婷婷久久 | 日韩成人一区 | 一区免费视频 | 色吧一区 | 国产一二在线 | 亚洲 欧美 自拍偷拍 | 亚洲精品电影在线观看 | 欧美性猛片aaaaaaa做受 | 国产精品成av人在线视午夜片 | 天堂影院一区二区 | 亚洲国产成人av | 黄色网在线 | 久久99精品国产91久久来源 | 日日爱影视| 激情视频在线观看 | 国产美女网站视频 | 99在线精品视频 | 亚洲精品久久久一区二区三区 | 日本久久久久久久久久久久 | 国产免费黄色 | 国产亚洲一区二区三区在线观看 | 99视频免费播放 | 99福利视频 | 免费h| 日韩精品在线网站 | 国产精品亲子伦av一区二区三区 | 天天干天天操天天爽 | 欧美精品久久久久 | 欧美性网 | 日韩精品一区二区三区中文字幕 | 一二三四区视频在线观看 | 国产成人毛片 | 免费一二区 | 欧美成人免费在线视频 | 三级成人在线 | 久久久久久久香蕉 | 网站一区二区三区 | 中文字幕亚洲二区 | 永久精品 | 国产亲子乱弄免费视频 | 精品www | 国产精品一区二区三区在线 | 日韩一区二区不卡 | 国产欧美精品一区二区三区四区 | 久久亚洲一区 | 日本私人网站在线观看 | av资源中文在线天堂 | 亚洲日韩欧美一区二区在线 | 亚洲日本午夜 | 中文字幕在线电影观看 | 视频一区在线 | 丰满少妇久久久久久久 | va在线| a级毛片基地 | 日韩视频精品 | 久久99国产精品 | 伊人久操 | 国产精品一区二区久久久久 | 色天天综合久久久久综合片 | 午夜影院免费视频 | 成人一区二区三区在线观看 | 日本精品久久久一区二区三区 | 欧美黄 片免费观看 | 美女久久 | 国产精品毛片一区二区 | aaa大片免费观看 | 中文字幕一区在线观看视频 | 国产精品午夜电影 | 日韩一区中文 | 免费av在线网站 | 99国产精品久久久 | 精品一二三区 | 亚洲成av人乱码色午夜 | 成人在线播放器 | 国产一区二区视频免费 | 国产日韩精品一区二区 | 国产欧美专区 | 少妇一级淫免费放 | 久久青青操 | 免费久久久 | 私人毛片免费高清视频 | 欧美成人性生活 | 欧美精品一级二级 | 免费成人在线电影 | 91一区二区三区久久国产乱 | 在线成人www免费观看视频 | 国产精品欧美一区二区三区不卡 | 久久伊人精品视频 | 国产伦精品一区二区三区四区视频 | 国产电影一区二区三区图片 | 亚洲美女在线视频 | 四虎永久免费影院 | 国产精品7 | 久久噜噜噜精品国产亚洲综合 | 久久国产综合 | 国产成人精品a视频一区www | 日韩欧美精品一区二区三区 | 伊人影视 | 日韩电影免费在线观看中文字幕 | 波多野结衣中文字幕在线视频 | 日韩成人在线视频 | 中文字幕av一区二区三区 | 神马香蕉久久 | 亚州成人 | 91麻豆精品国产91久久久资源速度 | 亚洲欧美综合乱码精品成人网 | 亚洲电影免费 | 久久久久av | 成人精品 | 成人不卡 | 久久这里只有精品首页 | 欧美日本高清视频 | 91精品久久久久 | 一区二区三区四区视频 | 国产成人在线免费观看 | 欧美一区二区在线免费观看 | 在线观看成人 | 国产精品久久久久久久电影 | 欧产日产国产精品一二 | 午夜精选视频 | 午夜免费看片 | 自拍偷拍小视频 | 欧美成人二区 | 国产一区二区欧美 | 五月激情综合网 | 精品成人一区 | 成人免费福利视频 | 欧美视频一二 | 欧美精品一区二区三区在线 | 九九综合九九 | 亚洲成熟少妇视频在线观看 | 色中色综合 | 亚洲免费人成在线视频观看 | 欧美天天| 中文字幕视频在线免费观看 | 欧美精品久久一区 | 亚洲人在线播放 | 在线国产视频 | 在线视频 亚洲 | 成人精品视频 | 欧美在线操 | 国产精品福利在线观看 | 黑人巨大精品欧美一区免费视频 | 久久综合色88 | 91aiai| 国产精品日韩欧美一区二区三区 | 一区二区久久 | 欧美成人小视频 | 一区二区精品在线 | 国产毛片毛片 | www.中文字幕| 国产激情91久久精品导航 | 五月婷婷综合激情 | 日韩在线观看中文字幕 | 91精品久久久久久综合五月天 | 亚洲日韩欧美一区二区在线 | 国产精品视频 | 日韩精品一| 成人1区2区| 国产精品亚洲一区二区三区在线 | 国产成人免费视频 | 一区二区免费 | 九一视频在线播放 | 国产午夜精品久久久 | 亚洲精品一区中文字幕乱码 | 国产免费拔擦拔擦8x高清在线人 | 欧美一区二区免费 | 欧洲国产伦久久久久久久 | 四虎影音| 天天躁日日躁狠狠躁av麻豆 | 一区自拍 | 成人精品视频一区二区三区 | 91精品国产色综合久久不卡98口 | 欧美精品一区二区三区蜜臀 | 国产 亚洲 网红 主播 | 一区二区免费看 | 天天碰天天操 | 日韩一级视频 | 免费一区二区三区 | 九九九色| 中文字幕在线免费观看 | 欧美成人黄激情免费视频 | 美女久久久久 | 欧美日韩一区二区三区免费视频 | 国产91久久久 | 久久高清 | 国产精品永久久久久久久久久 | 久久久久亚洲国产 | 成人v片| 亚洲一区免费视频 | 欧美午夜在线观看 | 日韩中文字幕在线视频 | 欧美日韩高清在线一区 | 欧美精品一区二区在线观看 | 成人看片网 | 国产大片aaa| 国产美女网站 | 中文成人无字幕乱码精品 | 国产成人精品999在线观看 | 欧美6一10sex性hd| 久久久久久亚洲精品 | 国产99久久久精品视频 | 毛片链接| av网站观看| 欧美精品理论片大全 | 亚洲高清视频在线观看 | 国产精品国产三级国产aⅴ无密码 | 欧美视频一级片 | 国产成人精品一区二区三区视频 | 免费黄色网止 | 亚洲精品一区二三区不卡 | 久久69精品久久久久久久电影好 | 精品欧美黑人一区二区三区 | 黄a在线看 | 日韩精品一区在线 | 亚洲成人精品一区 | 蜜臀久久99精品久久久无需会员 | 国产视频一区二区 | 视频精品一区 | 黄色片免费在线观看 | 亚洲免费精品 | 国产在线第一页 | 亚洲福利视频在线 | 国产精品福利在线观看 | 国产精品欧美日韩 | 国产精品国产成人国产三级 | 91一区二区 | 国产一区二区视频在线观看 | 午夜小视频免费 | 欧美日韩一区二区三区在线观看 | 久久久精品 | av中文在线| 成人精品免费视频 | 国内精品久久久久久影视8 91一区二区在线观看 | 伊人草 | 国产一区二区精品 | 国产99久久久精品视频 | 欧美久草| 免费一看一级毛片 | 日本爱爱| 精品少妇一区二区 | 精品视频二区 | 精品国产一区二区三区久久久蜜月 | 中文字幕在线看片 | 91在线视频观看 | 综合久久综合久久 | 欧美福利影院 | 欧美亚洲国产一区 | 亚洲福利 | 毛片网免费 | 日韩大尺度电影在线观看 | 亚洲视频欧美视频 | 天天干狠狠干 | 欧美视频免费 | 亚洲精品乱码久久久久久蜜桃图片 | 神马久久精品 | 精品国产第一国产综合精品 | 欧美另类专区 | av网站在线播放 | 欧美最猛性xxxxx亚洲精品 | aa级毛片毛片免费观看久 | 日韩视频在线观看视频 | 一区二区三区免费网站 | 国产成人综合一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 黄a在线看 | www九九热| 亚州精品天堂中文字幕 | 九九免费在线观看 | 成视频年人免费看黄网站 | 免费av电影网站 | 久久青青| 亚洲视频中文字幕 | 亚洲高清av在线 | 精品国产一区二区三区久久久 | 在线欧美日韩 | 专干老肥女人88av | 免费看国产一级片 | 久久99精品国产99久久6男男 | 国产精品久久久久久久久久久久 | a级在线 | 日韩一级二级三级 | v888av成人 | 伊人亚洲 | a级在线| 躁躁躁日躁夜夜躁 | 免费欧美一级 | 免费国产一区 | 欧美一区二区黄色片 | 欧美五月 | 亚洲视频 欧美视频 | 日本精品免费 | 久久久久久免费看 | 国产欧美精品一区二区 | 国产精品美女久久久久久免费 | 国产视频一区二区 | 亚洲成人三级 | 毛片特级| 亚洲网站免费 | 亚洲欧美综合精品久久成人 | 国产 欧美 日韩 一区 | 日韩精品一区在线视频 | 91啪影院 | 2021狠狠干 | a视频在线观看 | 精品久久久久久久久久久久久久 | 精品久久久久香蕉网 | 欧美一区二区三区在线视频观看 | 超碰官网 | 日韩成人中文字幕 | 亚洲 中文 欧美 日韩在线观看 | 久久在线视频 | 亚洲精品视频在线播放 | 在线毛片观看 | 日韩欧美国产一区二区三区 | 日韩国产 | av天空| av成人在线观看 | 久久xxx| 久久综合久 | 天天爽天天草 | 日韩免费 | 国产午夜久久久久 | 久久精品一区视频 | 少妇淫片aaaaa毛片叫床爽 | 色综合天天综合网国产成人网 | 欧美顶级毛片在线播放 | 国产精品18久久久久久久久 | 国产美女精品一区二区三区 | 日韩欧美精品在线 | 国产免费av在线 | 国产一区二区免费 | 国产精品中文字幕在线播放 | 日本高清中文字幕 | 国产伦精品一区二区三区在线 | 黄色一级免费看 | 国产一区二区在线看 | 亚洲久悠悠色悠在线播放 | 日本天堂一区二区 | 欧美久久一区二区 | 亚洲人成人一区二区在线观看 | 国产一区久久久 | 91电影在线| 日韩中文字幕免费在线 | 99久久免费精品国产男女性高好 | 亚洲精品一二三四五区 | 亚洲精品久久久久久久久久久 | 免费国产一区二区 | 亚洲午夜免费视频 | 精品国产一区二区三区久久久蜜月 | av在线免费观看网站 | 日韩一区二区在线观看视频 | 白浆在线 | 国产精品久久精品 | 美女久久久| 婷婷亚洲综合 | 欧美自拍视频在线 | 日韩在线 | 亚洲一区二区 | 性一交一乱一透一a级 | 欧美日韩在线第一页 | 亚洲一区二区三区 | 99久久日韩精品视频免费在线观看 | 亚洲福利精品 | 黄色av网站在线免费观看 | 亚洲 欧美 激情 另类 校园 | 亚洲国产精品一区 | 日韩欧美在线中文字幕 | 亚洲国产日本 | 99草草 | 亚洲精品一区二区三区中文字幕 | 国产精品美女久久久久久久久久久 | 色综合天天| av性色| 在线一区二区三区 | 日韩欧美国产精品综合嫩v 国产高清av在线一区二区三区 | 亚洲国产二区三区 | 欧美激情在线精品一区二区三区 | 亚洲一区视频 | 久久久成人精品 | 大桥未久亚洲精品久久久强制中出 | 欧美在线观看一区 | 91成人精品 | 在线欧美日韩 | 色视频www在线播放国产人成 | 精品一区二区久久久久久久网站 | 综合自拍偷拍 | 99视频网站 | 日韩欧美自拍 | 伊人网在线免费观看 | 中文字幕一二区 | 91免费版在线观看 | 嫩草视频在线观看免费 | 免费观看在线午夜影视 | 99久久久久久久久 | 亚洲成人黄色 | 三级欧美在线观看 | 国产午夜精品一区二区三区 | 亚洲精品乱码久久久久膏 | 欧美成年黄网站色视频 | 在线小视频 | 欧美专区在线 | 国产一区二区三区久久 | 中文字幕久久精品 | 亚洲精品一区二区另类图片 | 久久精品色欧美aⅴ一区二区 | 亚洲一级黄色 | 国产精品91视频 | 日日夜夜精品 | 青青久在线视频 | 欧美xxxⅹ性欧美大片 | 成人欧美一区二区三区在线观看 | 国产精品一区欧美 | 男女羞羞视频网站 | 中文字幕乱码一区二区三区 | 久草在线青青草 | 国产精品久久久久久久午夜片 | 国产精品毛片一区二区 | 欧美一级视频免费 | 国产成人精品一区二区三区视频 | 视频一区久久 | 国产精品日韩在线观看 | 欧美一区二区三 | 亚洲成人一区二区 | 久久中文视频 | 蜜桃毛片 | 91日日夜夜 | 久久国| 成人在线视频一区 | 激情com| 日本不卡高字幕在线2019 | 福利二区视频 | 久久国产精品久久久久久电车 |