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


Имена классов 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, который является абстрактным базовым классом, поэтому абстрактный квалификатор нельзя использовать в определяемом драйвером базовом классе для блоков событий. Вместо этого наследуйте базовый класс nonabstract из 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 см. в пакете SDK для Microsoft Windows.