探测Win2K/XP/2003本机系统信息( 三 )


ULONG; PinReadNoWaitMiss;; //牵制异步读冲突数目;
ULONG; PinReadWaitMiss;//牵制同步读冲突数目;
ULONG; CopyReadNoWait; //异步拷贝读次数;
ULONG; CopyReadWait;//同步拷贝读次数;
ULONG; CopyReadNoWaitMiss; //异步拷贝读故障次数;
ULONG; CopyReadWaitMiss;//同步拷贝读故障次数;
ULONG; MdlReadNoWait;; //异步MDL读次数;
ULONG; MdlReadWait;//同步MDL读次数;
ULONG; MdlReadNoWaitMiss;; //异步MDL读故障次数;
ULONG; MdlReadWaitMiss;//同步MDL读故障次数;
ULONG; ReadAheadIos;//向前读操作数目;
ULONG; LazyWriteIos;//LAZY写操作数目;
ULONG; LazyWritePages; //LAZY写页文件数目;
ULONG; DataFlushes;//缓存刷新次数;
ULONG; DataPages;; //缓存刷新页数;
ULONG; ContextSwitches;//环境切换数目;
ULONG; FirstLevelTbFills;; //第一层缓冲区填充次数;
ULONG; SecondLevelTbFills; //第二层缓冲区填充次数;
ULONG; SystemCall; //系统调用次数;
}SYSTEM_PERFORMANCE_INFORMATION,*PSYSTEM_PERFORMANCE_INFORMATION;
现在看到的是结构SYSTEM_PROCESSOR_TIMES提供的系统处理器的使用情况,包括各种情况下的使用时间及中断数目:
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;
页文件的使用情况,SYSTEM_PAGEFILE_INFORMATION提供了所需的相关信息:
typedef struct _SYSTEM_PAGEFILE_INFORMATION
{
ULONG NetxEntryOffset;//下一个结构的偏移量;
ULONG CurrentSize;//当前页文件大小;
ULONG TotalUsed;; //当前使用的页文件数;
ULONG PeakUsed;//当前使用的页文件峰值数;
UNICODE_STRING FileName;; //页文件的文件名称;
}SYSTEM_PAGEFILE_INFORMATION,*PSYSTEM_PAGEFILE_INFORMATION;
系统高速缓存的使用情况参见结构SYSTEM_CACHE_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;
附录:(所有完整源代码,您可以到我们FZ5FZ的主页下载) 。
1.T-PMList的头文件源代码:
#ifndef T_PMLIST_H
#define T_PMLIST_H
#include
#include
#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;

推荐阅读