Имена классов WMI и базовые классы
Имена классов WMI не учитывают регистр, должны начинаться с буквы и не могут начинаться или заканчиваться символом подчеркивания. Все остальные символы должны быть буквами, цифрами или символами подчеркивания.
Клиентские приложения WMI могут получать доступ к именам классов WMI драйвера и отображать их для пользователей. Описательные имена классов помогают сделать классы более интуитивно понятными в использовании.
Имена классов WMI должны быть уникальными в пространстве имен WMI. Следовательно, имена классов WMI драйвера не могут дублировать имена классов, определенные другим драйвером.
Чтобы предотвратить конфликты имен, модуль записи драйверов может определить базовый класс для конкретного драйвера и наследовать все классы WMI драйвера от этого базового класса. Имя класса и имя базового класса вместе, скорее всего, даст уникальное имя. Например, ниже показан абстрактный базовый класс для блоков данных последовательного драйвера:
// Serial driver's base class for data blocks
[abstract]
class MSSerial {
}
// Example class definition for a data block
[
//Class qualifiers
]
class MSSerial_StandardSerialInformation : MSSerial
{
//Data items
}
Настраиваемые блоки данных для конкретных устройств должны включать изготовителя, модель и тип драйвера или устройства в имени базового класса. Пример:
[abstract]
class Adaptec1542 {
}
class Adaptec1542_Bandwidth : Adaptec1542 {
//Data items
}
class Adaptec1542_Speed : Adaptec1542 {
//Data items
}
WMI допускает только один абстрактный базовый класс в заданной иерархии классов. Классы, определяющие блоки событий, должны быть производными от WmiEvent, который является абстрактным базовым классом, поэтому абстрактный квалификатор нельзя использовать в определяемом драйвером базовом классе для блоков событий. Вместо этого наследуйте неабстрактный базовый класс от WmiEvent, а затем наследуйте отдельные классы событий из этого базового класса. Пример:
//Serial driver's base class for event blocks
class MSSerialEvent : WmiEvent
{
}
//Example class definition for an event block
[
//Class qualifiers
]
class MSSerial_SendEvent : MSSerialEvent
{
//Data items
}
Дополнительные сведения об определении базовых классов в формате MOF см. в Microsoft Windows SDK.