// **************************************************************************
// Copyright (c) 1997-1999 Microsoft Corporation
//
// File:  AppStatsProv.mof
//
// Description:
//    Creates the ComPlusAppStats class and associated registration entries
//
// History:
//
// **************************************************************************


#pragma autorecover

#pragma namespace("\\root\\cimv2")

instance of __Namespace
{
	Name	= "MicrosoftHealthMonitor" ;
} ;

#pragma namespace("\\root\\cimv2\\MicrosoftHealthMonitor")

instance of __Win32Provider as $P
{
	Name        = "MicrosoftComPlus_AppStats" ;
    ClsId   = "{44262D4C-372F-4C89-BAF7-9A2C2A437B2F}" ;
} ;    

instance of __InstanceProviderRegistration
{
    Provider = $P;
    SupportsPut = FALSE;
    SupportsGet = TRUE;
    SupportsDelete = FALSE;
    SupportsEnumeration = FALSE;
};


/////////////////////////////////////////////////////////////////////
//
// Declare a class whose dynamic instances are provided by the 
// sample provider.

[dynamic, provider("MicrosoftComPlus_AppStats"), Description("This class provides statistics for a COM+ App and process statistics for the associated process if the COM+ App is running")]
class MicrosoftComPlus_AppStats
{
	[Key, Description("COM+ App Name")]
		string AppName;
	[Key, Description("Number of seconds to monitor without a query")]
		sint32 MaxIdleTime;
	[Description("Committed transactions since monitoring began")]
		sint32 TotalCommittedTransactions;
	[Description("Committed transactions per second since the last query")]
		real32 CommittedTransactionsPerSecond;
	[Description("Aborted transactions since monitoring began")]
		sint32 TotalAbortedTransactions;
	[Description("Aborted transactions per second since the last query")]
		real32 AbortedTransactionsPerSecond;
	[Description("Object creations since monitoring began")]
		sint32 TotalObjectCreations;
	[Description("Object creations per second since the last query")]
		real32 ObjectCreationsPerSecond;
	[Description("Object activations since monitoring began")]
		sint32 TotalObjectActivations;
	[Description("Object activations per second since the last query")]
		real32 ObjectActivationsPerSecond;
	[Description("Total number of shutdowns since monitoring began")]
		sint32 TotalShutdowns;
	[Description("Timeout shutdowns since monitoring began")]
		sint32 TimeoutShutdowns;
	[Description("Administrative shutdowns since monitoring began")]
		sint32 AdminShutdowns;
	[Description("Unexpected shutdowns since monitoring began")]
		sint32 FailureShutdowns;
	[Description("Object pool timeouts since monitoring began")]
		sint32 ObjectPoolTimeouts;

	[Description("Process statistic: a short textual description (one-line string) of the object")]
		string Caption;
	[Description("Process statistic: the name of the class or the subclass used in the creation of an instance")]
		string CreationClassName;
	[Description("Process statistic: time that the process began executing")]
		datetime CreationDate;
	[Description("Process statistic: the name of the Computer System class or the subclass used in the creation of an instance")]
		string CSCreationClassName;
	[Description("Process statistic: the name of the Computer System")]
		string CSName;
	[Description("Process statistic: a textual description of the object")]
		string Description;
	[Description("Process statistic: the path to the executable file of the process")]
		string ExecutablePath;
	[Description("Process statistic: the current operating condition of the process. Values include ready (2), running (3), and blocked (4), among others.")]
		uint16 ExecutionState;
	[Description("Process statistic: a string used to identify the process. A process ID is a process handle.")]
		string Handle;
	[Description("Process statistic: the total number of handles currently open by this process")]
		uint32 HandleCount;
	[Description("Process statistic: time when the object was installed. A lack of a value does not indicate that the object is not installed.")]
		datetime InstallDate;
	[Description("Process statistic: time in kernel mode, in milliseconds. If this information is not available, a value of 0 should be used.")]
		uint64 KernelModeTime;
	[Description("Process statistic: the maximum working set size of the process")]
		uint32 MaximumWorkingSetSize;
	[Description("Process statistic: the minimum working set size of the process")]
		uint32 MinimumWorkingSetSize;
	[Description("Process statistic: the label by which the object is known")]
		string Name;
	[Description("Process statistic: the name of the Operating System class or the subclass used in the creation of an instance")]
		string OSCreationClassName;
	[Description("Process statistic: the name of the Operating System")]
		string OSName;
	[Description("Process statistic: the number of I/O operations performed, other than read and write operations.")]
		uint64 OtherOperationCount;
	[Description("Process statistic: the amount of data transferred during operations other than read and write operations.")]
		uint64 OtherTransferCount;
	[Description("Process statistic: the number of page faults generated by the process")]
		uint32 PageFaults;
	[Description("Process statistic: the amount of page file space currently being used by the process")]
		uint32 PageFileUsage;
	[Description("Process statistic: the unique identifier of the process that created this process. Process identifier numbers are reused, so they only identify a process for the lifetime of that process.")]
		uint32 ParentProcessId;
	[Description("Process statistic: the maximum amount of page file space used during the life of the process")]
		uint32 PeakPageFileUsage;
	[Description("Process statistic: the maximum virtual address space the process has used at any one time")]
		uint64 PeakVirtualSize;
	[Description("Process statistic: the peak working set size of the process")]
		uint32 PeakWorkingSetSize;
	[Description("Process statistic: the scheduling priority of the process within the operating system.  Priority values can range from 0 (lowest priority) to 31 (highest priority)")]
		uint32 Priority;
	[Description("Process statistic: the current number of pages allocated that are accessible only to this process")]
		uint64 PrivatePageCount;
	[Description("Process statistic: the global process identifier that can be used to identify a process")]
		uint32 ProcessId;
	[Description("Process statistic: the quota amount of non-paged pool usage for the process")]
		uint32 QuotaNonPagedPoolUsage;
	[Description("Process statistic: the quota amount of paged pool usage for the process")]
		uint32 QuotaPagedPoolUsage;
	[Description("Process statistic: the peak quota amount of non-paged pool usage for the process")]
		uint32 QuotaPeakNonPagedPoolUsage;
	[Description("Process statistic: the peak quota amount of paged pool usage for the process")]
		uint32 QuotaPeakPagedPoolUsage;
	[Description("Process statistic: the number of read operations performed")]
		uint64 ReadOperationCount;
	[Description("Process statistic: the amount of data read")]
		uint64 ReadTransferCount;
	[Description("Process statistic: the unique identifier that is generated by the operating system when the session is created. A session spans a period of time from log in to log out on a particular system")]
		uint32 SessionId;
	[Description("Process statistic: the current status of the object such as OK, Degraded, Pred Fail, Error, Starting, Stopping, or Service")]
		string Status;
	[Description("Process statistic: time that the process was stopped or terminated")]
		datetime TerminationDate;
	[Description("Process statistic: the number of active threads in this process")]
		uint32 ThreadCount;
	[Description("Process statistic: time in user mode, in milliseconds. If this information is not available, a value of 0 should be used.")]
		uint64 UserModeTime;
	[Description("Process statistic: the current size in bytes of the virtual address space the process is using")]
		uint64 VirtualSize;
	[Description("Process statistic: the version of Windows in which the process is running")]
		string WindowsVersion;
	[Description("Process statistic: the amount of memory in bytes that a process needs to execute efficiently, for an operating system that uses page-based memory management")]
		uint64 WorkingSetSize;
	[Description("Process statistic: the number of write operations performed")]
		uint64 WriteOperationCount;
	[Description("Process statistic: the amount of data written")]
		uint64 WriteTransferCount;
};

