class Win32Perf
{
};

class Win32_PerfRawData : Win32Perf {};

class Win32_PerfFormattedData : Win32Perf {};


/////////////////////////////////////////////////////////////////////


[perfindex(4), dynamic, provider("NT5_GenericPerfProvider_V1"), singleton]

class WinPerf_Memory : Win32_PerfRawData
{
	[name]            string Name;

	[perfindex(24)]   uint32 AvailableBytes;
	[perfindex(26)]   uint32 CommittedBytes;
	[perfindex(30)]   uint32 CommitLimit;
	[perfindex(28)]   uint32 PageFaultsSec;
	[perfindex(32)]   uint32 WriteCopiesSec;
	[perfindex(34)]   uint32 TransitionFaultsSec;
	[perfindex(36)]   uint32 CacheFaultsSec;
	[perfindex(38)]   uint32 DemandZeroFaultsSec;
	[perfindex(40)]   uint32 PagesSec;
	[perfindex(822)]  uint32 PagesInputSec;
	[perfindex(42)]   uint32 PageReadsSec;
	[perfindex(48)]   uint32 PagesOutputSec;
	[perfindex(50)]   uint32 PageWritesSec;
	[perfindex(56)]   uint32 PoolPagedBytes;
	[perfindex(58)]   uint32 PoolNonpagedBytes;
	[perfindex(60)]   uint32 PoolPagedAllocs;
	[perfindex(64)]   uint32 PoolNonpagedAllocs;
	[perfindex(678)]  uint32 FreeSystemPageTableEntries;
	[perfindex(818)]  uint32 CacheBytes;
	[perfindex(820)]  uint32 CacheBytesPeak;
	[perfindex(66)]   uint32 PoolPagedResidentBytes;
	[perfindex(68)]   uint32 SystemCodeTotalBytes;
	[perfindex(70)]   uint32 SystemCodeResidentBytes;
	[perfindex(72)]   uint32 SystemDriverTotalBytes;
	[perfindex(74)]   uint32 SystemDriverResidentBytes;
	[perfindex(76)]   uint32 SystemCacheResidentBytes;
	[perfindex(1406)] uint32 PercentCommittedBytesInUse;
};


// Multi-instance perf object type

[perfindex(230), dynamic, provider("NT5_GenericPerfProvider_V1")]

class WinPerf_Process : Win32_PerfRawData
{
	[name, key]       string Name;

	[perfindex(784)]  uint32 IDProcess;
		    
	[perfindex(6)]    uint32 PercentProcessorTime;
	[perfindex(142)]  uint32 PecentUserTime;
	[perfindex(144)]  uint32 PercentPrivilegedTime;
	[perfindex(172)]  uint32 VirtualBytesPeak;
	[perfindex(174)]  uint32 VirtualBytes;
	[perfindex(28)]   uint32 PageFaultsSec;
	[perfindex(178)]  uint32 WorkingSetPeak;
	[perfindex(180)]  uint32 WorkingSet;
	[perfindex(182)]  uint32 PageFileBytesPeak;
	[perfindex(184)]  uint32 PageFileBytes;
	[perfindex(186)]  uint32 PrivateBytes;
	[perfindex(680)]  uint32 ThreadCount;
	[perfindex(682)]  uint32 PriorityBase;
	[perfindex(684)]  uint32 ElapsedTime;
	[perfindex(56)]   uint32 PoolPagedBytes;
	[perfindex(58)]   uint32 PoolNonpagedBytes;
	[perfindex(952)]  uint32 HandleCount;
};