WMI 클래스 예제
다음 예제에서는 직렬 포트 드라이버의 스키마에서 클래스 정의를 보여 줍니다. 이러한 예제에 표시된 guid 값은 자리 표시자입니다. 각 클래스 정의에는 guidgen.exe 또는 uuidgen.exe(Microsoft Windows SDK 포함)에서 생성된 고유한 GUID가 있어야 합니다.
// Standard class for reporting serial port information
// Class qualifiers
[WMI, guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
Dynamic, Provider("WMIProv"),
WmiExpense(1),
Locale("MS\\0x409"),
Description("Description of class"]
//Class name
class Vendor_SerialInfo {
//Required items
[key, read]
string InstanceName;
[read]
boolean Active;
// Bytes sent on port
// Property qualifiers
[read,
WmiDataId(1),
WmiScale(0),
WmiComplexity(1),
WmiVolatility(1000)]
Description("Description of property")]
// Data item
uint64 BytesSent;
// Bytes received on port
[read,
write,
WmiDataId(2),
WmiScale(0),
WmiVolatility(1000)]
uint64 BytesReceived;
// Who owns the port
[read,
WmiDataId(4),
WmiScale(0),
WmiVolatility(60000)]
string Owner;
// Status bit array
[read, write,
WmiDataId(3),
WmiScale(0)]
byte Status[16];
//The number of items in the XmitBufferSize array
[read,
WmiDataId(5),
WmiScale(0),
WmiComplexity(1),
WmiVolatility(1000)]
uint32 XmitDescriptorCount;
//Array of XmitDescriptor classes
[read,
WmiDataId(6),
WmiSizeIs("XmitDescriptorCount"),
WmiScale(0),
WmiComplexity(1),
WmiVolatility(1000)]
Vendor_XmitDescriptor XmitBufferSize[];
}
다음은 이전 예제에 표시된 포함된 클래스에 대한 클래스 정의입니다. 이 클래스에는 InstanceName 또는 활성 항목이 포함되어 있지 않습니다.
// Example of an embedded class
[WMI, guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
class Vendor_XmitDescriptor {
[read, WmiDataId(1)] int32 DestinationIndex;
[read, WmiDataId(2)] int32 DestinationTarget;
}
다음은 이벤트 블록에 대한 클래스 정의입니다. 클래스는 WmiEvent에서 파생됩니다.
// Example of an event
[WMI, Dynamic, Provider("WMIProv"),
guid("{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"),
locale("MS\\0x409"),
WmiExpense(1),
Description("Notify Toaster Arrival")]
class ToasterNotifyDeviceArrival : WMIEvent
{
[key, read]
string InstanceName;
[read]
boolean Active;
[read,
Description("Device Model Name"),
WmiDataId(1)] string ModelName;
};