Dynamic and Static Data
As well as understanding the distinction between metadata and instance data, it is important to understand that the data in WMI is categorized further as either dynamic or static. A simple rule of thumb is that metadata is inherently static and instance data more often is dynamic. As with all generalizations, however, there can always be exceptions to the rule.
Dynamic data is characterized by frequent change. Instance data commonly falls into this category, because the values associated with instance data often change during a managed object's lifetime. For example, the value assigned to a property that represents the amount of free space left on a disk partition is dynamic in nature, because during the day-to-day operation of the disk drive, the value normally will change. Other reasons that the data may change include:
The data may persist in other places, such as Active Directory, a database, the Internet, or simply a file on disk.
A WMI class can have properties that are retrieved from several sources, thus unifying separate data sources into one logical means of accessing it and its relationships. For example, the Win32_Service might obtain the Started property at run time and most of the other properties from the registry.
Static data is slow or nonchanging data, such as class or association definitions or a static property value such as a BIOS version number (although these values can change if the BIOS is stored on flash memory that can be reprogrammed) or a manufacturer's name. WMI class definitions often fall into this category because the classes that define a managed object do not change with great frequency.
Dynamic data (for example, the Read_errors value in the Value column in Table 4.1), is provided externally by WMI providers. Static data and metadata are stored in the CIM repository.
Table 4.1 Metadata Examples
Property (metadata) |
Type (metadata) |
Value (instance data) |
Model |
String |
CD99A_EXPRESS |
Version |
Real32 |
1.64 |
BIOSVersion |
String |
1.23.54.244 |
Read_errors |
Sint32 |
0 |