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 では、特定のクラス階層で抽象基本クラスを 1 つだけ使用できます。 イベント ブロックを定義するクラスは、抽象基底クラスである WmiEvent から派生する必要があります。そのため、イベント ブロックのドライバー定義の基底クラスでは 抽象 修飾子を使用できません。 代わりに、 WmiEvent から非abstract 基底クラスを派生し、その基底クラスから個々のイベント クラスを派生させます。 例えば次が挙げられます。
//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 を参照してください。