Compartir a través de


Nombres de clase WMI y clases base

Los nombres de clase WMI no distinguen mayúsculas de minúsculas, deben comenzar con una letra y no pueden comenzar ni terminar con un carácter de subrayado. Todos los caracteres restantes deben ser letras, dígitos o caracteres de subrayado.

Las aplicaciones cliente WMI pueden acceder a los nombres de clase WMI de un controlador y mostrarlos a los usuarios. Los nombres de clase descriptivos pueden ayudar a que las clases sean más intuitivas de usar.

Los nombres de clase WMI deben ser únicos dentro del espacio de nombres WMI. Por consiguiente, los nombres de clase WMI de un controlador no pueden duplicar los definidos por otro controlador.

Para ayudar a evitar colisiones de nombres, un escritor de controladores puede definir una clase base específica del controlador y derivar todas las clases WMI del controlador de esa clase base. El nombre de clase y el nombre de clase base juntos son más propensos a producir un nombre único. Por ejemplo, a continuación se muestra una clase base abstracta para los bloques de datos de un controlador serie:

// 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
}

Los bloques de datos personalizados específicos del dispositivo deben incluir el fabricante, el modelo y el tipo de controlador o dispositivo en el nombre de la clase base. Por ejemplo:

[abstract]
class Adaptec1542 {
}
 
class Adaptec1542_Bandwidth : Adaptec1542 {
    //Data items
}
 
class Adaptec1542_Speed : Adaptec1542 {
    //Data items
}

WMI solo permite una clase base abstracta en una jerarquía de clases determinada. Las clases que definen bloques de eventos deben derivar de WmiEvent, que es una clase base abstracta, por lo que el calificador abstracto no se puede usar en una clase base definida por el controlador para bloques de eventos. En su lugar, derive una clase base noabstract de WmiEvent y, a continuación, derive clases de eventos individuales de esa clase base. Por ejemplo:

//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
}

Para obtener más información sobre cómo definir clases base en formato MOF, vea el Microsoft Windows SDK.