ドライバーによって定義される WMI データ項目
WMI データまたはイベント ブロックのクラス定義のデータ項目には、次のいずれかを指定できます。
文字列や符号なし整数などの基本的なデータ型。
埋め込みクラス。 埋め込みクラスは、別のクラス定義のデータ項目としてのみ使用され、データ ブロックまたはイベント ブロックとして公開されません。
基本データ型または埋め込みクラスの固定長配列または可変長配列。
WMI にデータ ブロックを送信する場合、ドライバーはブロックの先頭を 8 バイト境界に合わせる必要があります。 ブロック内の後続のすべてのデータ項目は、データ型の対応する配置に合わせて配置する必要があります。 boolean または uint8 は、1 バイト境界に配置する必要があります。 sint16、uint16、または string 項目は、2 バイト境界に配置する必要があります。 配列は、配列の基本型に基づいて配置する必要があります。 バイトの配列はバイト境界に配置する必要があり、uint64 の配列は 8 バイト境界に配置する必要があります。 埋め込みクラスは、埋め込みクラス内で最大の要素として定義されている埋め込みクラスの自然な配置に基づいて配置する必要があります。 たとえば、埋め込みクラスに uint64 がある場合、クラスは 8 バイトの境界に配置する必要があります。 WMI データ項目の配置は、Microsoft C コンパイラの /Zp8 スイッチと同じ規則に従います。
ドライバー ライターは、必須項目である InstanceName と Active 以外のブロック内のデータ項目を定義する必要はありません。 たとえば、空のイベント ブロックは、追加のデータなしでイベントが発生したことを示す通知として機能できます。 または、データ ブロックは、IRP_MN_QUERY_ALL_DATA 要求に応答して単純にインスタンス名を列挙することができます。
次の表に、WMI データまたはイベント ブロック内の項目を定義するために使用できる MOF データ型を示します。 MOF データ型 に関する詳細は、Microsoft Windows SDK のドキュメンテーションを参照してください。
データ型 | データ形式 | アラインメント (バイト単位) |
---|---|---|
string |
文字列の長さをバイト単位で指定し、その後に Unicode 文字列データを指定する USHORT。 文字列データには、必要に応じて、終端の 0 の後にパディングを含めることができます。 その場合、文字列の長さは、終端の 0 とパディングを含める必要があります。 ドライバーは、MaxLen 修飾子を使用して、文字列の最大長を指定できます。 文字列の最大長を指定するドライバーは、固定サイズのバッファーを使用して文字列を保持できます。 文字列がバッファーのサイズより少しでも小さい場合、ドライバーは文字列の残りの部分をゼロで埋め込むことができます。 |
2 |
boolean |
0 が FALSE で 0 以外の値が TRUE である 1 バイト値 |
1 |
sint8 |
符号付き 8 ビット整数 |
1 |
uint8 |
符号なし 8 ビット整数 |
1 |
sint16 |
符号付き 16 ビット整数 |
2 |
uint16 |
符号なし 16 ビット整数 |
2 |
sint32 |
符号付き 32 ビット整数 |
4 |
uint32 |
符号なし 32 ビット整数 |
4 |
sint64 |
符号付き 64 ビット整数 |
8 |
uint64 |
符号なし 64 ビット整数 |
8 |
datetime |
絶対日付または時間間隔を指定する固定長 25 文字の Unicode 文字列。 datetime 値の形式は次のとおりです。 yyyymmddhhmmss.mmmmmmsutc ここで: yyyy は、年の 4 桁表記です mm は、月の 2 桁表記です dd は、日付の 2 桁表記です hh は 24 時間制の時刻です mm は分です ss は秒です。 mmmmmm はマイクロ秒です s は正符号 (+) または負符号 (-) で、utc が協定世界時からの正のオフセットか負のオフセットのいずれであるかを示します。コロン (:) の場合、datetime 値は時間間隔です utc は、協定世界時からのオフセット (分単位) です。 utc がゼロ (000) の場合、datetime 値は時間間隔です。 値は 0 で埋め込む必要があります。 有意ではないフィールドには、アスタリスク (*) を入力できます。 |
2 |