ASP.NET VERSIONS: 2.0
WMI in .NET
Take a Close Look at Your System s Performance
By Joydip Kanjilal
Windows Management Instrumentation (WMI) is a Microsoft technology that enables us to retrieve system-related information. It is efficient in retrieving both hardware-related and software-related information from a computer system. Using WMI, one can communicate with the Windows OS, the hardware devices, running processes, COM+ components, etc. The objective of this article is to provide the reader with a bird s eye view of WMI, as well as a primer on its applicability.
What Is WMI?
Windows Management Instrumentation (WMI) is a technology that allows a robust, low-level communication with the Windows Operating System from Microsoft development environments. It can portray all details related to the hardware specifications of a computer system. It should be noted that the WMI classes are types defined using an abstract language called MOF (Managed Object Format) that predates the CLR. One can query for WMI data using the Windows Management Instrumentation Query Language (WQL), a subset of the American National Standard Query Language (ANSI SQL).
The following is an example of a WQL query:
SELECT * FROM Win32_Processor
WMI is an extremely powerful technology that can be used to retrieve and monitor the system. It can be used in any of the following scenarios:
- Retrieve hardware specifications and the Win 32 OS specifications for a system
- Determine the CPU and memory load factors in a system
- Work with performance counters to monitor application performance in a managed environment
- Create applications for working with Mobile devices
- Event notification and configuration management in distributed computing environments
Working with WMI in ASP.NET
WMI can be used in ASP.NET applications to track the application s performance; it is supported by the following namespaces:
There are many classes and interfaces in the System.Diagnostics, System.Management, and System.Management.Instrumentation namespaces that can be used for reading WMI data.
Performance Counters are used to retrieve performance-related information in the system. They can be used to monitor and manage the system s details. They are organized by the following:
- Counter Name
- Instance Name
The System.Diagnostics.PerformanceCounter class can be used to retrieve a variety of details related to the system s hardware and OS details. As an example, we can retrieve the % CPU time using this code snippet:
PerformanceCounter performanceCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
int requiredValue = performanceCounter.NextValue();
Note that the constructor of the PerformanceCounter class accepts the arguments as stated earlier. We can list the various performance counters by using the perfmon.exe tool and then selecting the Add Tool option. Moreover, VS.NET includes support for displaying performance counters using the Server Explorer.
There is a lot to the WMI architecture, including performance counters, event notifications, configuration management, and storage, all built for a distributed environment which makes WMI the preferred technology for monitoring applications on the Windows platform.
Working extensively in Microsoft technologies for more than 10 years, Joydip Kanjilal is a Senior Project Leader for a company in Hyderabad, India. His programming skills include C, C++, Java, C#, VB, VC++, ASP.NET, XML, and UML. He has worked with .NET and C# for more than five years. Reach Joydip at mailto:[email protected].