次の方法で共有


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 では、特定のクラス階層で抽象基底クラスを 1 つだけ使用できます。 イベント ブロックを定義するクラスは、抽象基底クラスである 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」を参照してください。