Поделиться через


Имена классов 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.