2011-07-13 15:05:19 +00:00
|
|
|
#
|
|
|
|
# Definitions of WMI classes used as input for the hyperv_wmi_generator.py
|
|
|
|
# script.
|
|
|
|
#
|
|
|
|
# This format is line-based, so end-of-line is important.
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Class definition:
|
|
|
|
#
|
|
|
|
# class <name>
|
|
|
|
# <type> <name>
|
|
|
|
# ...
|
|
|
|
# end
|
|
|
|
#
|
|
|
|
# Allowed values for <type> are: boolean, string, datetime, int8, int16,
|
|
|
|
# int32, int64, uint8, uint16, uint32 and uint64
|
|
|
|
#
|
|
|
|
# The property <name> can be followed by [] to define a dynamic array.
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# Based on MSDN Hyper-V WMI Classes:
|
2020-08-25 22:44:00 +00:00
|
|
|
# https://msdn.microsoft.com/en-us/library/cc136986%28v=vs.85%29.aspx
|
2011-07-13 15:05:19 +00:00
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
class Msvm_ComputerSystem
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
uint16 OperationalStatus[]
|
|
|
|
string StatusDescriptions[]
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
uint16 EnabledState
|
|
|
|
string OtherEnabledState
|
|
|
|
uint16 RequestedState
|
|
|
|
uint16 EnabledDefault
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
string CreationClassName
|
|
|
|
string Name
|
|
|
|
string PrimaryOwnerName
|
|
|
|
string PrimaryOwnerContact
|
|
|
|
string Roles[]
|
|
|
|
string NameFormat
|
|
|
|
string OtherIdentifyingInfo[]
|
|
|
|
string IdentifyingDescriptions[]
|
|
|
|
uint16 Dedicated[]
|
|
|
|
string OtherDedicatedDescriptions[]
|
|
|
|
uint16 ResetCapability
|
|
|
|
uint16 PowerManagementCapabilities[]
|
|
|
|
uint64 OnTimeInMilliseconds
|
|
|
|
datetime TimeOfLastConfigurationChange
|
|
|
|
uint32 ProcessID
|
|
|
|
uint16 AssignedNumaNodeList[]
|
|
|
|
end
|
|
|
|
|
|
|
|
|
hyperv: add support for Hyper-V 2012 and newer
This patch reworks the Hyper-V driver structs and the code generator
to provide seamless support for both Hyper-V 2008 and 2012 or newer.
This does not implement any new libvirt APIs, it just adapts existing
2008-only driver to also handle 2012 and newer by sharing as much
driver code as possible (currently it's all of it :-)). This is needed
to set the foundation before we can move forward with implementing the
rest of the driver APIs.
With the 2012 release, Microsoft introduced "v2" version of Msvm_* WMI
classes. Those are largely the same as "v1" (used in 2008) but have some
new properties as well as need different wsman request URIs. To
accomodate those differences, most of work went into the code generator
so that it's "aware" of possibility of multiple versions of the same WMI
class and produce C code accordingly.
To accomplish this the following changes were made:
* the abstract hypervObject struct's data member was changed to a union
that has "common", "v1" and "v2" members. Those are structs that
represent WMI classes that we get back from wsman response. The
"common" struct has members that are present in both "v1" and "v2"
which the driver API callbacks can use to read the data from in
version-independent manner (if version-specific member needs to be
accessed the driver can check priv->wmiVersion and read from "v1" or
"v2" as needed). Those structs are guaranteed to be memory aligned
by the code generator (see the align_property_members implementation
that takes care of that)
* the generator produces *_WmiInfo for each WMI class "family" that
holds an array of hypervWmiClassInfoPtr each providing information
as to which request URI to use for each "version" of given WMI class
as well as XmlSerializerInfo struct needed to unserilize WS-MAN
responsed into the data structs. The driver uses those to make proper
WS-MAN request depending on which version it's connected to.
* the generator no longer produces "helper" functions such as
hypervGetMsvmComputerSystemList as those were originally just simple
wrappers around hypervEnumAndPull, instead those were hand-written
now (to keep driver changes minimal). The reason is that we'll have
more code coming implementing missing libvirt APIs and surely code
patterns will emerge that would warrant more useful "utility" functions
like that.
* a hypervInitConnection was added to the driver which "detects"
Hyper-V version by testing simple wsman request using v2 then falling
back to v1, obviously if both fail, the we're erroring out.
To express how the above translates in code:
void
hypervImplementSomeLibvirtApi(virConnectPtr conn, ...)
{
hypervPrivate *priv = conn->privateData;
virBuffer query = VIR_BUFFER_INITIALIZER;
hypervWqlQuery wqlQuery = HYPERV_WQL_QUERY_INITIALIZER;
Msvm_ComputerSystem *list = NULL; /* typed hypervObject instance */
/* the WmiInfo struct has the data needed for wsman request and
* response handling for both v1 and v2 */
wqlQuery.info = Msvm_ComputerSystem_WmiInfo;
wqlQuery.query = &query;
virBufferAddLit(&query, "select * from Msvm_ComputerSystem");
if (hypervEnumAndPull(priv, &wqlQuery, (hypervObject **) &list) < 0) {
goto cleanup;
}
if (list == NULL) {
/* none found */
goto cleanup;
}
/* works with v1 and v2 */
char *vmName = list->data.common->Name;
/* access property that is in v2 only */
if (priv->wmiVersion == HYPERV_WMI_VERSION_V2)
char *foo = list->data.v2->V2Property;
else
char *foo = list->data.v1->V1Property;
cleanup:
hypervFreeObject(priv, (hypervObject *)list);
}
2017-04-04 22:26:08 +00:00
|
|
|
class v2/Msvm_ComputerSystem
|
|
|
|
string InstanceID
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
uint16 OperationalStatus[]
|
|
|
|
string StatusDescriptions[]
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
uint16 CommunicationStatus
|
|
|
|
uint16 DetailedStatus
|
|
|
|
uint16 OperatingStatus
|
|
|
|
uint16 PrimaryStatus
|
|
|
|
uint16 EnabledState
|
|
|
|
string OtherEnabledState
|
|
|
|
uint16 RequestedState
|
|
|
|
uint16 EnabledDefault
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
uint16 AvailableRequestedStates[]
|
|
|
|
uint16 TransitioningToState
|
|
|
|
string CreationClassName
|
|
|
|
string Name
|
|
|
|
string PrimaryOwnerName
|
|
|
|
string PrimaryOwnerContact
|
|
|
|
string Roles[]
|
|
|
|
string NameFormat
|
|
|
|
string OtherIdentifyingInfo[]
|
|
|
|
string IdentifyingDescriptions[]
|
|
|
|
uint16 Dedicated[]
|
|
|
|
string OtherDedicatedDescriptions[]
|
|
|
|
uint16 ResetCapability
|
|
|
|
uint16 PowerManagementCapabilities[]
|
|
|
|
uint64 OnTimeInMilliseconds
|
|
|
|
uint32 ProcessID
|
|
|
|
datetime TimeOfLastConfigurationChange
|
|
|
|
uint16 NumberOfNumaNodes
|
|
|
|
uint16 ReplicationState
|
|
|
|
uint16 ReplicationHealth
|
|
|
|
uint16 ReplicationMode
|
|
|
|
uint16 FailedOverReplicationType
|
|
|
|
uint16 LastReplicationType
|
|
|
|
datetime LastApplicationConsistentReplicationTime
|
|
|
|
datetime LastReplicationTime
|
|
|
|
datetime LastSuccessfulBackupTime
|
|
|
|
uint16 EnhancedSessionModeState
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2011-07-13 15:05:19 +00:00
|
|
|
class Msvm_ConcreteJob
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
uint16 OperationalStatus[]
|
|
|
|
string StatusDescriptions[]
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
string JobStatus
|
|
|
|
datetime TimeSubmitted
|
|
|
|
datetime ScheduledStartTime
|
|
|
|
datetime StartTime
|
|
|
|
datetime ElapsedTime
|
|
|
|
uint32 JobRunTimes
|
|
|
|
uint8 RunMonth
|
|
|
|
int8 RunDay
|
|
|
|
int8 RunDayOfWeek
|
|
|
|
datetime RunStartInterval
|
|
|
|
uint16 LocalOrUtcTime
|
|
|
|
datetime UntilTime
|
|
|
|
string Notify
|
|
|
|
string Owner
|
|
|
|
uint32 Priority
|
|
|
|
uint16 PercentComplete
|
|
|
|
boolean DeleteOnCompletion
|
|
|
|
uint16 ErrorCode
|
|
|
|
string ErrorDescription
|
|
|
|
string ErrorSummaryDescription
|
|
|
|
uint16 RecoveryAction
|
|
|
|
string OtherRecoveryAction
|
|
|
|
string InstanceID
|
|
|
|
string Name
|
|
|
|
uint16 JobState
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
datetime TimeBeforeRemoval
|
|
|
|
boolean Cancellable
|
|
|
|
end
|
|
|
|
|
|
|
|
|
hyperv: add support for Hyper-V 2012 and newer
This patch reworks the Hyper-V driver structs and the code generator
to provide seamless support for both Hyper-V 2008 and 2012 or newer.
This does not implement any new libvirt APIs, it just adapts existing
2008-only driver to also handle 2012 and newer by sharing as much
driver code as possible (currently it's all of it :-)). This is needed
to set the foundation before we can move forward with implementing the
rest of the driver APIs.
With the 2012 release, Microsoft introduced "v2" version of Msvm_* WMI
classes. Those are largely the same as "v1" (used in 2008) but have some
new properties as well as need different wsman request URIs. To
accomodate those differences, most of work went into the code generator
so that it's "aware" of possibility of multiple versions of the same WMI
class and produce C code accordingly.
To accomplish this the following changes were made:
* the abstract hypervObject struct's data member was changed to a union
that has "common", "v1" and "v2" members. Those are structs that
represent WMI classes that we get back from wsman response. The
"common" struct has members that are present in both "v1" and "v2"
which the driver API callbacks can use to read the data from in
version-independent manner (if version-specific member needs to be
accessed the driver can check priv->wmiVersion and read from "v1" or
"v2" as needed). Those structs are guaranteed to be memory aligned
by the code generator (see the align_property_members implementation
that takes care of that)
* the generator produces *_WmiInfo for each WMI class "family" that
holds an array of hypervWmiClassInfoPtr each providing information
as to which request URI to use for each "version" of given WMI class
as well as XmlSerializerInfo struct needed to unserilize WS-MAN
responsed into the data structs. The driver uses those to make proper
WS-MAN request depending on which version it's connected to.
* the generator no longer produces "helper" functions such as
hypervGetMsvmComputerSystemList as those were originally just simple
wrappers around hypervEnumAndPull, instead those were hand-written
now (to keep driver changes minimal). The reason is that we'll have
more code coming implementing missing libvirt APIs and surely code
patterns will emerge that would warrant more useful "utility" functions
like that.
* a hypervInitConnection was added to the driver which "detects"
Hyper-V version by testing simple wsman request using v2 then falling
back to v1, obviously if both fail, the we're erroring out.
To express how the above translates in code:
void
hypervImplementSomeLibvirtApi(virConnectPtr conn, ...)
{
hypervPrivate *priv = conn->privateData;
virBuffer query = VIR_BUFFER_INITIALIZER;
hypervWqlQuery wqlQuery = HYPERV_WQL_QUERY_INITIALIZER;
Msvm_ComputerSystem *list = NULL; /* typed hypervObject instance */
/* the WmiInfo struct has the data needed for wsman request and
* response handling for both v1 and v2 */
wqlQuery.info = Msvm_ComputerSystem_WmiInfo;
wqlQuery.query = &query;
virBufferAddLit(&query, "select * from Msvm_ComputerSystem");
if (hypervEnumAndPull(priv, &wqlQuery, (hypervObject **) &list) < 0) {
goto cleanup;
}
if (list == NULL) {
/* none found */
goto cleanup;
}
/* works with v1 and v2 */
char *vmName = list->data.common->Name;
/* access property that is in v2 only */
if (priv->wmiVersion == HYPERV_WMI_VERSION_V2)
char *foo = list->data.v2->V2Property;
else
char *foo = list->data.v1->V1Property;
cleanup:
hypervFreeObject(priv, (hypervObject *)list);
}
2017-04-04 22:26:08 +00:00
|
|
|
class v2/Msvm_ConcreteJob
|
|
|
|
string InstanceID
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
string Name
|
|
|
|
uint16 OperationalStatus[]
|
|
|
|
string StatusDescriptions[]
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
uint16 CommunicationStatus
|
|
|
|
uint16 DetailedStatus
|
|
|
|
uint16 OperatingStatus
|
|
|
|
uint16 PrimaryStatus
|
|
|
|
string JobStatus
|
|
|
|
datetime TimeSubmitted
|
|
|
|
datetime ScheduledStartTime
|
|
|
|
datetime StartTime
|
|
|
|
datetime ElapsedTime
|
|
|
|
uint32 JobRunTimes
|
|
|
|
uint8 RunMonth
|
|
|
|
sint8 RunDay
|
|
|
|
sint8 RunDayOfWeek
|
|
|
|
datetime RunStartInterval
|
|
|
|
uint16 LocalOrUtcTime
|
|
|
|
datetime UntilTime
|
|
|
|
string Notify
|
|
|
|
string Owner
|
|
|
|
uint32 Priority
|
|
|
|
uint16 PercentComplete
|
|
|
|
boolean DeleteOnCompletion
|
|
|
|
uint16 ErrorCode
|
|
|
|
string ErrorDescription
|
|
|
|
string ErrorSummaryDescription
|
|
|
|
uint16 RecoveryAction
|
|
|
|
string OtherRecoveryAction
|
|
|
|
uint16 JobState
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
datetime TimeBeforeRemoval
|
|
|
|
boolean Cancellable
|
|
|
|
uint16 JobType
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2011-07-13 15:05:19 +00:00
|
|
|
class Msvm_MemorySettingData
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string InstanceID
|
|
|
|
string ElementName
|
|
|
|
uint16 ResourceType
|
|
|
|
string OtherResourceType
|
|
|
|
string ResourceSubType
|
|
|
|
string PoolID
|
|
|
|
uint16 ConsumerVisibility
|
|
|
|
string HostResource[]
|
|
|
|
string AllocationUnits
|
|
|
|
uint64 VirtualQuantity
|
|
|
|
uint64 Reservation
|
|
|
|
uint64 Limit
|
|
|
|
uint32 Weight
|
|
|
|
boolean AutomaticAllocation
|
|
|
|
boolean AutomaticDeallocation
|
|
|
|
string Parent
|
|
|
|
string Connection[]
|
|
|
|
string Address
|
|
|
|
uint16 MappingBehavior
|
|
|
|
boolean IsVirtualized
|
|
|
|
string DeviceID
|
|
|
|
string DeviceIDFormat
|
|
|
|
boolean DynamicMemoryEnabled
|
|
|
|
# uint32 TargetMemoryBuffer # Available only on Windows Server 2008 R2 SP1
|
|
|
|
end
|
|
|
|
|
|
|
|
|
hyperv: add support for Hyper-V 2012 and newer
This patch reworks the Hyper-V driver structs and the code generator
to provide seamless support for both Hyper-V 2008 and 2012 or newer.
This does not implement any new libvirt APIs, it just adapts existing
2008-only driver to also handle 2012 and newer by sharing as much
driver code as possible (currently it's all of it :-)). This is needed
to set the foundation before we can move forward with implementing the
rest of the driver APIs.
With the 2012 release, Microsoft introduced "v2" version of Msvm_* WMI
classes. Those are largely the same as "v1" (used in 2008) but have some
new properties as well as need different wsman request URIs. To
accomodate those differences, most of work went into the code generator
so that it's "aware" of possibility of multiple versions of the same WMI
class and produce C code accordingly.
To accomplish this the following changes were made:
* the abstract hypervObject struct's data member was changed to a union
that has "common", "v1" and "v2" members. Those are structs that
represent WMI classes that we get back from wsman response. The
"common" struct has members that are present in both "v1" and "v2"
which the driver API callbacks can use to read the data from in
version-independent manner (if version-specific member needs to be
accessed the driver can check priv->wmiVersion and read from "v1" or
"v2" as needed). Those structs are guaranteed to be memory aligned
by the code generator (see the align_property_members implementation
that takes care of that)
* the generator produces *_WmiInfo for each WMI class "family" that
holds an array of hypervWmiClassInfoPtr each providing information
as to which request URI to use for each "version" of given WMI class
as well as XmlSerializerInfo struct needed to unserilize WS-MAN
responsed into the data structs. The driver uses those to make proper
WS-MAN request depending on which version it's connected to.
* the generator no longer produces "helper" functions such as
hypervGetMsvmComputerSystemList as those were originally just simple
wrappers around hypervEnumAndPull, instead those were hand-written
now (to keep driver changes minimal). The reason is that we'll have
more code coming implementing missing libvirt APIs and surely code
patterns will emerge that would warrant more useful "utility" functions
like that.
* a hypervInitConnection was added to the driver which "detects"
Hyper-V version by testing simple wsman request using v2 then falling
back to v1, obviously if both fail, the we're erroring out.
To express how the above translates in code:
void
hypervImplementSomeLibvirtApi(virConnectPtr conn, ...)
{
hypervPrivate *priv = conn->privateData;
virBuffer query = VIR_BUFFER_INITIALIZER;
hypervWqlQuery wqlQuery = HYPERV_WQL_QUERY_INITIALIZER;
Msvm_ComputerSystem *list = NULL; /* typed hypervObject instance */
/* the WmiInfo struct has the data needed for wsman request and
* response handling for both v1 and v2 */
wqlQuery.info = Msvm_ComputerSystem_WmiInfo;
wqlQuery.query = &query;
virBufferAddLit(&query, "select * from Msvm_ComputerSystem");
if (hypervEnumAndPull(priv, &wqlQuery, (hypervObject **) &list) < 0) {
goto cleanup;
}
if (list == NULL) {
/* none found */
goto cleanup;
}
/* works with v1 and v2 */
char *vmName = list->data.common->Name;
/* access property that is in v2 only */
if (priv->wmiVersion == HYPERV_WMI_VERSION_V2)
char *foo = list->data.v2->V2Property;
else
char *foo = list->data.v1->V1Property;
cleanup:
hypervFreeObject(priv, (hypervObject *)list);
}
2017-04-04 22:26:08 +00:00
|
|
|
class v2/Msvm_MemorySettingData
|
|
|
|
string InstanceID
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
uint16 ResourceType
|
|
|
|
string OtherResourceType
|
|
|
|
string ResourceSubType
|
|
|
|
string PoolID
|
|
|
|
uint16 ConsumerVisibility
|
|
|
|
string HostResource[]
|
|
|
|
string AllocationUnits
|
|
|
|
uint64 VirtualQuantity
|
|
|
|
uint64 Reservation
|
|
|
|
uint64 Limit
|
|
|
|
uint32 Weight
|
|
|
|
boolean AutomaticAllocation
|
|
|
|
boolean AutomaticDeallocation
|
|
|
|
string Parent
|
|
|
|
string Connection[]
|
|
|
|
string Address
|
|
|
|
uint16 MappingBehavior
|
|
|
|
string AddressOnParent
|
|
|
|
string VirtualQuantityUnits
|
|
|
|
boolean DynamicMemoryEnabled
|
|
|
|
uint32 TargetMemoryBuffer
|
|
|
|
boolean IsVirtualized
|
|
|
|
boolean SwapFilesInUse
|
|
|
|
uint64 MaxMemoryBlocksPerNumaNode
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2011-07-13 15:05:19 +00:00
|
|
|
class Msvm_ProcessorSettingData
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string InstanceID
|
|
|
|
string ElementName
|
|
|
|
uint16 ResourceType
|
|
|
|
string OtherResourceType
|
|
|
|
string ResourceSubType
|
|
|
|
string PoolID
|
|
|
|
uint16 ConsumerVisibility
|
|
|
|
string HostResource[]
|
|
|
|
string AllocationUnits
|
|
|
|
uint64 VirtualQuantity
|
|
|
|
uint64 Reservation
|
|
|
|
uint64 Limit
|
|
|
|
uint32 Weight
|
|
|
|
boolean AutomaticAllocation
|
|
|
|
boolean AutomaticDeallocation
|
|
|
|
string Parent
|
|
|
|
string Connection[]
|
|
|
|
string Address
|
|
|
|
uint16 MappingBehavior
|
|
|
|
boolean IsVirtualized
|
|
|
|
string DeviceID
|
|
|
|
string DeviceIDFormat
|
|
|
|
uint16 ProcessorsPerSocket
|
|
|
|
uint16 SocketCount
|
|
|
|
boolean ThreadsEnabled
|
|
|
|
boolean LimitCPUID
|
|
|
|
boolean LimitProcessorFeatures
|
|
|
|
end
|
|
|
|
|
|
|
|
|
hyperv: add support for Hyper-V 2012 and newer
This patch reworks the Hyper-V driver structs and the code generator
to provide seamless support for both Hyper-V 2008 and 2012 or newer.
This does not implement any new libvirt APIs, it just adapts existing
2008-only driver to also handle 2012 and newer by sharing as much
driver code as possible (currently it's all of it :-)). This is needed
to set the foundation before we can move forward with implementing the
rest of the driver APIs.
With the 2012 release, Microsoft introduced "v2" version of Msvm_* WMI
classes. Those are largely the same as "v1" (used in 2008) but have some
new properties as well as need different wsman request URIs. To
accomodate those differences, most of work went into the code generator
so that it's "aware" of possibility of multiple versions of the same WMI
class and produce C code accordingly.
To accomplish this the following changes were made:
* the abstract hypervObject struct's data member was changed to a union
that has "common", "v1" and "v2" members. Those are structs that
represent WMI classes that we get back from wsman response. The
"common" struct has members that are present in both "v1" and "v2"
which the driver API callbacks can use to read the data from in
version-independent manner (if version-specific member needs to be
accessed the driver can check priv->wmiVersion and read from "v1" or
"v2" as needed). Those structs are guaranteed to be memory aligned
by the code generator (see the align_property_members implementation
that takes care of that)
* the generator produces *_WmiInfo for each WMI class "family" that
holds an array of hypervWmiClassInfoPtr each providing information
as to which request URI to use for each "version" of given WMI class
as well as XmlSerializerInfo struct needed to unserilize WS-MAN
responsed into the data structs. The driver uses those to make proper
WS-MAN request depending on which version it's connected to.
* the generator no longer produces "helper" functions such as
hypervGetMsvmComputerSystemList as those were originally just simple
wrappers around hypervEnumAndPull, instead those were hand-written
now (to keep driver changes minimal). The reason is that we'll have
more code coming implementing missing libvirt APIs and surely code
patterns will emerge that would warrant more useful "utility" functions
like that.
* a hypervInitConnection was added to the driver which "detects"
Hyper-V version by testing simple wsman request using v2 then falling
back to v1, obviously if both fail, the we're erroring out.
To express how the above translates in code:
void
hypervImplementSomeLibvirtApi(virConnectPtr conn, ...)
{
hypervPrivate *priv = conn->privateData;
virBuffer query = VIR_BUFFER_INITIALIZER;
hypervWqlQuery wqlQuery = HYPERV_WQL_QUERY_INITIALIZER;
Msvm_ComputerSystem *list = NULL; /* typed hypervObject instance */
/* the WmiInfo struct has the data needed for wsman request and
* response handling for both v1 and v2 */
wqlQuery.info = Msvm_ComputerSystem_WmiInfo;
wqlQuery.query = &query;
virBufferAddLit(&query, "select * from Msvm_ComputerSystem");
if (hypervEnumAndPull(priv, &wqlQuery, (hypervObject **) &list) < 0) {
goto cleanup;
}
if (list == NULL) {
/* none found */
goto cleanup;
}
/* works with v1 and v2 */
char *vmName = list->data.common->Name;
/* access property that is in v2 only */
if (priv->wmiVersion == HYPERV_WMI_VERSION_V2)
char *foo = list->data.v2->V2Property;
else
char *foo = list->data.v1->V1Property;
cleanup:
hypervFreeObject(priv, (hypervObject *)list);
}
2017-04-04 22:26:08 +00:00
|
|
|
class v2/Msvm_ProcessorSettingData
|
|
|
|
string InstanceID
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
uint16 ResourceType
|
|
|
|
string OtherResourceType
|
|
|
|
string ResourceSubType
|
|
|
|
string PoolID
|
|
|
|
uint16 ConsumerVisibility
|
|
|
|
string HostResource[]
|
|
|
|
string AllocationUnits
|
|
|
|
uint64 VirtualQuantity
|
|
|
|
uint64 Reservation
|
|
|
|
uint64 Limit
|
|
|
|
uint32 Weight
|
|
|
|
boolean AutomaticAllocation
|
|
|
|
boolean AutomaticDeallocation
|
|
|
|
string Parent
|
|
|
|
string Connection[]
|
|
|
|
string Address
|
|
|
|
uint16 MappingBehavior
|
|
|
|
string AddressOnParent
|
|
|
|
string VirtualQuantityUnits
|
|
|
|
boolean LimitCPUID
|
|
|
|
boolean LimitProcessorFeatures
|
|
|
|
uint64 MaxProcessorsPerNumaNode
|
|
|
|
uint64 MaxNumaNodesPerSocket
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2011-07-13 15:05:19 +00:00
|
|
|
class Msvm_VirtualSystemSettingData
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
string InstanceID
|
|
|
|
string SystemName
|
|
|
|
uint16 SettingType
|
|
|
|
uint16 VirtualSystemType
|
|
|
|
string OtherVirtualSystemType
|
|
|
|
boolean AutoActivate
|
|
|
|
datetime CreationTime
|
|
|
|
string Notes
|
|
|
|
string BIOSGUID
|
|
|
|
string BIOSSerialNumber
|
|
|
|
string BaseBoardSerialNumber
|
|
|
|
string ChassisSerialNumber
|
|
|
|
string ChassisAssetTag
|
|
|
|
boolean BIOSNumLock
|
|
|
|
uint16 BootOrder[]
|
|
|
|
string Parent
|
|
|
|
uint16 NumaNodeList[]
|
|
|
|
boolean NumaNodesAreRequired
|
|
|
|
end
|
|
|
|
|
|
|
|
|
hyperv: add support for Hyper-V 2012 and newer
This patch reworks the Hyper-V driver structs and the code generator
to provide seamless support for both Hyper-V 2008 and 2012 or newer.
This does not implement any new libvirt APIs, it just adapts existing
2008-only driver to also handle 2012 and newer by sharing as much
driver code as possible (currently it's all of it :-)). This is needed
to set the foundation before we can move forward with implementing the
rest of the driver APIs.
With the 2012 release, Microsoft introduced "v2" version of Msvm_* WMI
classes. Those are largely the same as "v1" (used in 2008) but have some
new properties as well as need different wsman request URIs. To
accomodate those differences, most of work went into the code generator
so that it's "aware" of possibility of multiple versions of the same WMI
class and produce C code accordingly.
To accomplish this the following changes were made:
* the abstract hypervObject struct's data member was changed to a union
that has "common", "v1" and "v2" members. Those are structs that
represent WMI classes that we get back from wsman response. The
"common" struct has members that are present in both "v1" and "v2"
which the driver API callbacks can use to read the data from in
version-independent manner (if version-specific member needs to be
accessed the driver can check priv->wmiVersion and read from "v1" or
"v2" as needed). Those structs are guaranteed to be memory aligned
by the code generator (see the align_property_members implementation
that takes care of that)
* the generator produces *_WmiInfo for each WMI class "family" that
holds an array of hypervWmiClassInfoPtr each providing information
as to which request URI to use for each "version" of given WMI class
as well as XmlSerializerInfo struct needed to unserilize WS-MAN
responsed into the data structs. The driver uses those to make proper
WS-MAN request depending on which version it's connected to.
* the generator no longer produces "helper" functions such as
hypervGetMsvmComputerSystemList as those were originally just simple
wrappers around hypervEnumAndPull, instead those were hand-written
now (to keep driver changes minimal). The reason is that we'll have
more code coming implementing missing libvirt APIs and surely code
patterns will emerge that would warrant more useful "utility" functions
like that.
* a hypervInitConnection was added to the driver which "detects"
Hyper-V version by testing simple wsman request using v2 then falling
back to v1, obviously if both fail, the we're erroring out.
To express how the above translates in code:
void
hypervImplementSomeLibvirtApi(virConnectPtr conn, ...)
{
hypervPrivate *priv = conn->privateData;
virBuffer query = VIR_BUFFER_INITIALIZER;
hypervWqlQuery wqlQuery = HYPERV_WQL_QUERY_INITIALIZER;
Msvm_ComputerSystem *list = NULL; /* typed hypervObject instance */
/* the WmiInfo struct has the data needed for wsman request and
* response handling for both v1 and v2 */
wqlQuery.info = Msvm_ComputerSystem_WmiInfo;
wqlQuery.query = &query;
virBufferAddLit(&query, "select * from Msvm_ComputerSystem");
if (hypervEnumAndPull(priv, &wqlQuery, (hypervObject **) &list) < 0) {
goto cleanup;
}
if (list == NULL) {
/* none found */
goto cleanup;
}
/* works with v1 and v2 */
char *vmName = list->data.common->Name;
/* access property that is in v2 only */
if (priv->wmiVersion == HYPERV_WMI_VERSION_V2)
char *foo = list->data.v2->V2Property;
else
char *foo = list->data.v1->V1Property;
cleanup:
hypervFreeObject(priv, (hypervObject *)list);
}
2017-04-04 22:26:08 +00:00
|
|
|
class v2/Msvm_VirtualSystemSettingData
|
|
|
|
string InstanceID
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
string VirtualSystemIdentifier
|
|
|
|
string VirtualSystemType
|
|
|
|
string Notes[]
|
|
|
|
datetime CreationTime
|
|
|
|
string ConfigurationID
|
|
|
|
string ConfigurationDataRoot
|
|
|
|
string ConfigurationFile
|
|
|
|
string SnapshotDataRoot
|
|
|
|
string SuspendDataRoot
|
|
|
|
string SwapFileDataRoot
|
|
|
|
string LogDataRoot
|
|
|
|
uint16 AutomaticStartupAction
|
|
|
|
datetime AutomaticStartupActionDelay
|
|
|
|
uint16 AutomaticStartupActionSequenceNumber
|
|
|
|
uint16 AutomaticShutdownAction
|
|
|
|
uint16 AutomaticRecoveryAction
|
|
|
|
string RecoveryFile
|
|
|
|
string BIOSGUID
|
|
|
|
string BIOSSerialNumber
|
|
|
|
string BaseBoardSerialNumber
|
|
|
|
string ChassisSerialNumber
|
|
|
|
string ChassisAssetTag
|
|
|
|
boolean BIOSNumLock
|
|
|
|
uint16 BootOrder[]
|
|
|
|
string Parent
|
|
|
|
boolean IsSaved
|
|
|
|
string AdditionalRecoveryInformation
|
|
|
|
boolean AllowFullSCSICommandSet
|
|
|
|
uint32 DebugChannelId
|
|
|
|
uint16 DebugPortEnabled
|
|
|
|
uint32 DebugPort
|
|
|
|
string Version
|
|
|
|
boolean IncrementalBackupEnabled
|
|
|
|
boolean VirtualNumaEnabled
|
|
|
|
boolean AllowReducedFcRedundancy
|
|
|
|
string VirtualSystemSubType
|
|
|
|
string BootSourceOrder[]
|
|
|
|
boolean PauseAfterBootFailure
|
|
|
|
uint16 NetworkBootPreferredProtocol
|
|
|
|
boolean SecureBootEnabled
|
|
|
|
uint64 LowMmioGapSize
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2011-07-13 15:05:19 +00:00
|
|
|
class Win32_ComputerSystem
|
|
|
|
uint16 AdminPasswordStatus
|
|
|
|
boolean AutomaticManagedPagefile
|
|
|
|
boolean AutomaticResetBootOption
|
|
|
|
boolean AutomaticResetCapability
|
|
|
|
uint16 BootOptionOnLimit
|
|
|
|
uint16 BootOptionOnWatchDog
|
|
|
|
boolean BootROMSupported
|
|
|
|
string BootupState
|
|
|
|
string Caption
|
|
|
|
uint16 ChassisBootupState
|
|
|
|
string CreationClassName
|
|
|
|
int16 CurrentTimeZone
|
|
|
|
boolean DaylightInEffect
|
|
|
|
string Description
|
|
|
|
string DNSHostName
|
|
|
|
string Domain
|
|
|
|
uint16 DomainRole
|
|
|
|
boolean EnableDaylightSavingsTime
|
|
|
|
uint16 FrontPanelResetStatus
|
|
|
|
boolean InfraredSupported
|
|
|
|
# string InitialLoadInfo # MSDN documents it, but it's not there
|
|
|
|
datetime InstallDate
|
|
|
|
uint16 KeyboardPasswordStatus
|
|
|
|
string LastLoadInfo
|
|
|
|
string Manufacturer
|
|
|
|
string Model
|
|
|
|
string Name
|
|
|
|
string NameFormat
|
|
|
|
boolean NetworkServerModeEnabled
|
|
|
|
uint32 NumberOfLogicalProcessors
|
|
|
|
uint32 NumberOfProcessors
|
|
|
|
uint8 OEMLogoBitmap[]
|
|
|
|
string OEMStringArray[]
|
|
|
|
boolean PartOfDomain
|
|
|
|
int64 PauseAfterReset
|
|
|
|
uint16 PCSystemType
|
|
|
|
uint16 PowerManagementCapabilities[]
|
|
|
|
boolean PowerManagementSupported
|
|
|
|
uint16 PowerOnPasswordStatus
|
|
|
|
uint16 PowerState
|
|
|
|
uint16 PowerSupplyState
|
|
|
|
string PrimaryOwnerContact
|
|
|
|
string PrimaryOwnerName
|
|
|
|
uint16 ResetCapability
|
|
|
|
int16 ResetCount
|
|
|
|
int16 ResetLimit
|
|
|
|
string Roles[]
|
|
|
|
string Status
|
|
|
|
string SupportContactDescription[]
|
|
|
|
uint16 SystemStartupDelay
|
|
|
|
string SystemStartupOptions[]
|
|
|
|
uint8 SystemStartupSetting
|
|
|
|
string SystemType
|
|
|
|
uint16 ThermalState
|
|
|
|
uint64 TotalPhysicalMemory
|
|
|
|
string UserName
|
|
|
|
uint16 WakeUpType
|
|
|
|
string Workgroup
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Win32_Processor
|
|
|
|
uint16 AddressWidth
|
|
|
|
uint16 Architecture
|
|
|
|
uint16 Availability
|
|
|
|
string Caption
|
|
|
|
uint32 ConfigManagerErrorCode
|
|
|
|
boolean ConfigManagerUserConfig
|
|
|
|
uint16 CpuStatus
|
|
|
|
string CreationClassName
|
|
|
|
uint32 CurrentClockSpeed
|
|
|
|
uint16 CurrentVoltage
|
|
|
|
uint16 DataWidth
|
|
|
|
string Description
|
|
|
|
string DeviceID
|
|
|
|
boolean ErrorCleared
|
|
|
|
string ErrorDescription
|
|
|
|
uint32 ExtClock
|
|
|
|
uint16 Family
|
|
|
|
datetime InstallDate
|
|
|
|
uint32 L2CacheSize
|
|
|
|
uint32 L2CacheSpeed
|
|
|
|
uint32 L3CacheSize
|
|
|
|
uint32 L3CacheSpeed
|
|
|
|
uint32 LastErrorCode
|
|
|
|
uint16 Level
|
|
|
|
uint16 LoadPercentage
|
|
|
|
string Manufacturer
|
|
|
|
uint32 MaxClockSpeed
|
|
|
|
string Name
|
|
|
|
uint32 NumberOfCores
|
|
|
|
uint32 NumberOfLogicalProcessors
|
|
|
|
string OtherFamilyDescription
|
|
|
|
string PNPDeviceID
|
|
|
|
uint16 PowerManagementCapabilities[]
|
|
|
|
boolean PowerManagementSupported
|
|
|
|
string ProcessorId
|
|
|
|
uint16 ProcessorType
|
|
|
|
uint16 Revision
|
|
|
|
string Role
|
|
|
|
string SocketDesignation
|
|
|
|
string Status
|
|
|
|
uint16 StatusInfo
|
|
|
|
string Stepping
|
|
|
|
string SystemCreationClassName
|
|
|
|
string SystemName
|
|
|
|
string UniqueId
|
|
|
|
uint16 UpgradeMethod
|
|
|
|
string Version
|
|
|
|
uint32 VoltageCaps
|
|
|
|
end
|
2016-08-09 12:39:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
class CIM_DataFile
|
|
|
|
uint32 AccessMask
|
|
|
|
boolean Archive
|
|
|
|
string Caption
|
|
|
|
boolean Compressed
|
|
|
|
string CompressionMethod
|
|
|
|
string CreationClassName
|
|
|
|
datetime CreationDate
|
|
|
|
string CSCreationClassName
|
|
|
|
string CSName
|
|
|
|
string Description
|
|
|
|
string Drive
|
|
|
|
string EightDotThreeFileName
|
|
|
|
boolean Encrypted
|
|
|
|
string EncryptionMethod
|
|
|
|
string Extension
|
|
|
|
string FileName
|
|
|
|
uint64 FileSize
|
|
|
|
string FileType
|
|
|
|
string FSCreationClassName
|
|
|
|
string FSName
|
|
|
|
boolean Hidden
|
|
|
|
datetime InstallDate
|
|
|
|
uint64 InUseCount
|
|
|
|
datetime LastAccessed
|
|
|
|
datetime LastModified
|
|
|
|
string Manufacturer
|
|
|
|
string Name
|
|
|
|
string Path
|
|
|
|
boolean Readable
|
|
|
|
string Status
|
|
|
|
boolean System
|
|
|
|
string Version
|
|
|
|
boolean Writeable
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Win32_ComputerSystemProduct
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string IdentifyingNumber
|
|
|
|
string Name
|
|
|
|
string SKUNumber
|
|
|
|
string UUID
|
|
|
|
string Vendor
|
|
|
|
string Version
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor
|
|
|
|
uint64 AddressDomainFlushesPersec
|
|
|
|
uint64 AddressSpaceEvictionsPersec
|
|
|
|
uint64 AddressSpaceFlushesPersec
|
|
|
|
uint64 AddressSpaceSwitchesPersec
|
|
|
|
uint64 APICEOIAccessesPersec
|
|
|
|
uint64 APICIPIsSentPersec
|
|
|
|
uint64 APICMMIOAccessesPersec
|
|
|
|
uint64 APICSelfIPIsSentPersec
|
|
|
|
uint64 APICTPRAccessesPersec
|
|
|
|
string Caption
|
|
|
|
uint64 ControlRegisterAccessesCost
|
|
|
|
uint64 ControlRegisterAccessesCost_Base
|
|
|
|
uint64 ControlRegisterAccessesPersec
|
|
|
|
uint64 CPUIDInstructionsCost
|
|
|
|
uint64 CPUIDInstructionsCost_Base
|
|
|
|
uint64 CPUIDInstructionsPersec
|
|
|
|
uint64 CPUWaitTimePerDispatch
|
|
|
|
uint64 CPUWaitTimePerDispatch_Base
|
|
|
|
uint64 DebugRegisterAccessesCost
|
|
|
|
uint64 DebugRegisterAccessesCost_Base
|
|
|
|
uint64 DebugRegisterAccessesPersec
|
|
|
|
string Description
|
|
|
|
uint64 EmulatedInstructionsCost
|
|
|
|
uint64 EmulatedInstructionsCost_Base
|
|
|
|
uint64 EmulatedInstructionsPersec
|
|
|
|
uint64 ExternalInterruptsCost
|
|
|
|
uint64 ExternalInterruptsCost_Base
|
|
|
|
uint64 ExternalInterruptsPersec
|
|
|
|
uint64 Frequency_Object
|
|
|
|
uint64 Frequency_PerfTime
|
|
|
|
uint64 Frequency_Sys100NS
|
|
|
|
uint64 GlobalGVARangeFlushesPersec
|
|
|
|
uint64 GPASpaceHypercallsPersec
|
|
|
|
uint64 GuestPageTableMapsPersec
|
|
|
|
uint64 HardwareInterruptsPersec
|
|
|
|
uint64 HLTInstructionsCost
|
|
|
|
uint64 HLTInstructionsCost_Base
|
|
|
|
uint64 HLTInstructionsPersec
|
|
|
|
uint64 HypercallsCost
|
|
|
|
uint64 HypercallsCost_Base
|
|
|
|
uint64 HypercallsPersec
|
|
|
|
uint64 IOInstructionsCost
|
|
|
|
uint64 IOInstructionsCost_Base
|
|
|
|
uint64 IOInstructionsPersec
|
|
|
|
uint64 IOInterceptMessagesPersec
|
|
|
|
uint64 LargePageTLBFillsPersec
|
|
|
|
uint64 LocalFlushedGVARangesPersec
|
|
|
|
uint64 LogicalProcessorDispatchesPersec
|
|
|
|
uint64 LogicalProcessorHypercallsPersec
|
|
|
|
uint64 LogicalProcessorMigrationsPersec
|
|
|
|
uint64 LongSpinWaitHypercallsPersec
|
|
|
|
uint64 MemoryInterceptMessagesPersec
|
|
|
|
uint64 MSRAccessesCost
|
|
|
|
uint64 MSRAccessesCost_Base
|
|
|
|
uint64 MSRAccessesPersec
|
|
|
|
uint64 MWAITInstructionsCost
|
|
|
|
uint64 MWAITInstructionsCost_Base
|
|
|
|
uint64 MWAITInstructionsPersec
|
|
|
|
string Name
|
|
|
|
uint64 NestedPageFaultInterceptsCost
|
|
|
|
uint64 NestedPageFaultInterceptsCost_Base
|
|
|
|
uint64 NestedPageFaultInterceptsPersec
|
|
|
|
uint64 OtherHypercallsPersec
|
|
|
|
uint64 OtherInterceptsCost
|
|
|
|
uint64 OtherInterceptsCost_Base
|
|
|
|
uint64 OtherInterceptsPersec
|
|
|
|
uint64 OtherMessagesPersec
|
|
|
|
uint64 PageFaultInterceptsCost
|
|
|
|
uint64 PageFaultInterceptsCost_Base
|
|
|
|
uint64 PageFaultInterceptsPersec
|
|
|
|
uint64 PageInvalidationsCost
|
|
|
|
uint64 PageInvalidationsCost_Base
|
|
|
|
uint64 PageInvalidationsPersec
|
|
|
|
uint64 PageTableAllocationsPersec
|
|
|
|
uint64 PageTableEvictionsPersec
|
|
|
|
uint64 PageTableReclamationsPersec
|
|
|
|
uint64 PageTableResetsPersec
|
|
|
|
uint64 PageTableValidationsPersec
|
|
|
|
uint64 PageTableWriteInterceptsPersec
|
|
|
|
uint64 PendingInterruptsCost
|
|
|
|
uint64 PendingInterruptsCost_Base
|
|
|
|
uint64 PendingInterruptsPersec
|
|
|
|
uint64 PercentGuestRunTime
|
|
|
|
uint64 PercentGuestRunTime_Base
|
|
|
|
uint64 PercentHypervisorRunTime
|
|
|
|
uint64 PercentHypervisorRunTime_Base
|
|
|
|
uint64 PercentRemoteRunTime
|
|
|
|
uint64 PercentRemoteRunTime_Base
|
|
|
|
uint64 PercentTotalRunTime
|
|
|
|
uint64 PercentTotalRunTime_Base
|
|
|
|
uint64 ReflectedGuestPageFaultsPersec
|
|
|
|
uint64 SmallPageTLBFillsPersec
|
|
|
|
uint64 SyntheticInterruptHypercallsPersec
|
|
|
|
uint64 SyntheticInterruptsPersec
|
|
|
|
uint64 Timestamp_Object
|
|
|
|
uint64 Timestamp_PerfTime
|
|
|
|
uint64 Timestamp_Sys100NS
|
|
|
|
uint64 TotalInterceptsCost
|
|
|
|
uint64 TotalInterceptsCost_Base
|
|
|
|
uint64 TotalInterceptsPersec
|
|
|
|
uint64 TotalMessagesPersec
|
|
|
|
uint64 VirtualInterruptHypercallsPersec
|
|
|
|
uint64 VirtualInterruptsPersec
|
|
|
|
uint64 VirtualMMUHypercallsPersec
|
|
|
|
uint64 VirtualProcessorHypercallsPersec
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Win32_OperatingSystem
|
|
|
|
string BootDevice
|
|
|
|
string BuildNumber
|
|
|
|
string BuildType
|
|
|
|
string Caption
|
|
|
|
string CodeSet
|
|
|
|
string CountryCode
|
|
|
|
string CreationClassName
|
|
|
|
string CSCreationClassName
|
|
|
|
string CSDVersion
|
|
|
|
string CSName
|
2020-10-05 16:20:12 +00:00
|
|
|
int16 CurrentTimeZone
|
2016-08-09 12:39:09 +00:00
|
|
|
boolean DataExecutionPrevention_Available
|
|
|
|
boolean DataExecutionPrevention_32BitApplications
|
|
|
|
boolean DataExecutionPrevention_Drivers
|
|
|
|
uint8 DataExecutionPrevention_SupportPolicy
|
|
|
|
boolean Debug
|
|
|
|
string Description
|
|
|
|
boolean Distributed
|
|
|
|
uint32 EncryptionLevel
|
|
|
|
uint8 ForegroundApplicationBoost
|
|
|
|
uint64 FreePhysicalMemory
|
|
|
|
uint64 FreeSpaceInPagingFiles
|
|
|
|
uint64 FreeVirtualMemory
|
|
|
|
datetime InstallDate
|
|
|
|
uint32 LargeSystemCache
|
|
|
|
datetime LastBootUpTime
|
|
|
|
datetime LocalDateTime
|
|
|
|
string Locale
|
|
|
|
string Manufacturer
|
|
|
|
uint32 MaxNumberOfProcesses
|
|
|
|
uint64 MaxProcessMemorySize
|
|
|
|
string MUILanguages[]
|
|
|
|
string Name
|
|
|
|
uint32 NumberOfLicensedUsers
|
|
|
|
uint32 NumberOfProcesses
|
|
|
|
uint32 NumberOfUsers
|
|
|
|
uint32 OperatingSystemSKU
|
|
|
|
string Organization
|
|
|
|
string OSArchitecture
|
|
|
|
uint32 OSLanguage
|
|
|
|
uint32 OSProductSuite
|
|
|
|
uint16 OSType
|
|
|
|
string OtherTypeDescription
|
|
|
|
boolean PAEEnabled
|
|
|
|
string PlusProductID
|
|
|
|
string PlusVersionNumber
|
|
|
|
# boolean PortableOperatingSystem # Available only on Windows 8 and Windows Server 2012
|
|
|
|
boolean Primary
|
|
|
|
uint32 ProductType
|
|
|
|
string RegisteredUser
|
|
|
|
string SerialNumber
|
|
|
|
uint16 ServicePackMajorVersion
|
|
|
|
uint16 ServicePackMinorVersion
|
|
|
|
uint64 SizeStoredInPagingFiles
|
|
|
|
string Status
|
|
|
|
uint32 SuiteMask
|
|
|
|
string SystemDevice
|
|
|
|
string SystemDirectory
|
|
|
|
string SystemDrive
|
|
|
|
uint64 TotalSwapSpaceSize
|
|
|
|
uint64 TotalVirtualMemorySize
|
|
|
|
uint64 TotalVisibleMemorySize
|
|
|
|
string Version
|
|
|
|
string WindowsDirectory
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Msvm_VirtualSwitch
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
uint16 OperationalStatus[]
|
|
|
|
string StatusDescriptions[]
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
uint16 EnabledState
|
|
|
|
string OtherEnabledState
|
|
|
|
uint16 RequestedState
|
|
|
|
uint16 EnabledDefault
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
string CreationClassName
|
|
|
|
string Name
|
|
|
|
string PrimaryOwnerContact
|
|
|
|
string PrimaryOwnerName
|
|
|
|
string Roles[]
|
|
|
|
string NameFormat
|
|
|
|
string OtherIdentifyingInfo[]
|
|
|
|
string IdentifyingDescriptions[]
|
|
|
|
uint16 Dedicated[]
|
|
|
|
string OtherDedicatedDescriptions[]
|
|
|
|
uint16 ResetCapability
|
|
|
|
uint16 PowerManagementCapabilities[]
|
|
|
|
string ScopeOfResidence
|
|
|
|
uint32 NumLearnableAddresses
|
|
|
|
uint32 MaxVMQOffloads
|
|
|
|
uint32 MaxChimneyOffloads
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Msvm_VirtualSystemManagementService
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
uint16 OperationalStatus
|
|
|
|
string StatusDescriptions
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
uint16 EnabledState
|
|
|
|
string OtherEnabledState
|
|
|
|
uint16 RequestedState
|
|
|
|
uint16 EnabledDefault
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
string SystemCreationClassName
|
|
|
|
string SystemName
|
|
|
|
string CreationClassName
|
|
|
|
string Name
|
|
|
|
string PrimaryOwnerName
|
|
|
|
string PrimaryOwnerContact
|
|
|
|
string StartMode
|
|
|
|
boolean Started
|
|
|
|
end
|
|
|
|
|
2017-06-27 19:13:27 +00:00
|
|
|
class v2/Msvm_VirtualSystemManagementService
|
|
|
|
string InstanceID
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
string Name
|
|
|
|
uint16 OperationalStatus[]
|
|
|
|
string StatusDescriptions[]
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
uint16 CommunicationStatus
|
|
|
|
uint16 DetailedStatus
|
|
|
|
uint16 OperatingStatus
|
|
|
|
uint16 PrimaryStatus
|
|
|
|
uint16 EnabledState
|
|
|
|
string OtherEnabledState
|
|
|
|
uint16 RequestedState
|
|
|
|
uint16 EnabledDefault
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
uint16 AvailableRequestedStates[]
|
|
|
|
uint16 TransitioningToState
|
|
|
|
string SystemCreationClassName
|
|
|
|
string SystemName
|
|
|
|
string CreationClassName
|
|
|
|
string PrimaryOwnerName
|
|
|
|
string PrimaryOwnerContact
|
|
|
|
string StartMode
|
|
|
|
boolean Started
|
|
|
|
end
|
2016-08-09 12:39:09 +00:00
|
|
|
|
|
|
|
class Msvm_VirtualSystemGlobalSettingData
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
string InstanceID
|
|
|
|
string SystemName
|
|
|
|
uint16 SettingType
|
|
|
|
uint16 VirtualSystemType
|
|
|
|
string OtherVirtualSystemType
|
|
|
|
boolean AutoActivate
|
|
|
|
datetime CreationTime
|
|
|
|
string ExternalDataRoot
|
|
|
|
string SnapshotDataRoot
|
|
|
|
uint16 AutomaticStartupAction
|
|
|
|
datetime AutomaticStartupActionDelay
|
|
|
|
uint16 AutomaticShutdownAction
|
|
|
|
uint16 AutomaticRecoveryAction
|
|
|
|
string AdditionalRecoveryInformation
|
|
|
|
string ScopeOfResidence
|
|
|
|
uint32 DebugChannelId
|
|
|
|
boolean AllowFullSCSICommandSet
|
|
|
|
string Version
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Msvm_ResourceAllocationSettingData
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string InstanceID
|
|
|
|
string ElementName
|
|
|
|
uint16 ResourceType
|
|
|
|
string OtherResourceType
|
|
|
|
string ResourceSubType
|
|
|
|
string PoolID
|
|
|
|
uint16 ConsumerVisibility
|
|
|
|
string HostResource[]
|
|
|
|
string AllocationUnits
|
|
|
|
uint64 VirtualQuantity
|
|
|
|
uint64 Reservation
|
|
|
|
uint64 Limit
|
|
|
|
uint32 Weight
|
|
|
|
boolean AutomaticAllocation
|
|
|
|
boolean AutomaticDeallocation
|
|
|
|
string Parent
|
|
|
|
string Connection[]
|
|
|
|
string Address
|
|
|
|
uint16 MappingBehavior
|
|
|
|
string VirtualSystemIdentifiers[]
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Msvm_AllocationCapabilities
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
string InstanceID
|
|
|
|
string OtherResourceType
|
|
|
|
uint16 RequestTypesSupported
|
|
|
|
string ResourceSubType
|
|
|
|
uint16 ResourceType
|
|
|
|
uint16 SharingMode
|
|
|
|
uint16 SupportedAddStates[]
|
|
|
|
uint16 SupportedRemoveStates[]
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Msvm_SwitchPort
|
|
|
|
string Caption
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
string StatusDescriptions[]
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
string OtherEnabledState
|
|
|
|
uint16 RequestedState
|
|
|
|
uint16 EnabledDefault
|
|
|
|
string SystemCreationClassName
|
|
|
|
string SystemName
|
|
|
|
string CreationClassName
|
|
|
|
string Description
|
|
|
|
uint16 OperationalStatus[]
|
|
|
|
uint16 EnabledState
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
string Name
|
|
|
|
string NameFormat
|
|
|
|
uint16 ProtocolType
|
|
|
|
uint16 ProtocolIFType
|
|
|
|
string OtherTypeDescription
|
|
|
|
boolean BroadcastResetSupported
|
|
|
|
uint16 PortNumber
|
|
|
|
string ScopeOfResidence
|
|
|
|
uint32 VMQOffloadWeight
|
|
|
|
uint32 ChimneyOffloadWeight
|
|
|
|
uint32 VMQOffloadUsage
|
|
|
|
uint32 ChimneyOffloadUsage
|
|
|
|
uint32 VMQOffloadLimit
|
|
|
|
uint32 ChimneyOffloadLimit
|
|
|
|
boolean AllowMacSpoofing
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Msvm_SyntheticEthernetPortSettingData
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string InstanceID
|
|
|
|
string ElementName
|
|
|
|
uint16 ResourceType
|
|
|
|
string OtherResourceType
|
|
|
|
string ResourceSubType
|
|
|
|
string PoolID
|
|
|
|
uint16 ConsumerVisibility
|
|
|
|
string HostResource[]
|
|
|
|
string AllocationUnits
|
|
|
|
uint64 VirtualQuantity
|
|
|
|
uint64 Reservation
|
|
|
|
uint64 Limit
|
|
|
|
uint32 Weight
|
|
|
|
boolean AutomaticAllocation
|
|
|
|
boolean AutomaticDeallocation
|
|
|
|
string Parent
|
|
|
|
string Connection[]
|
|
|
|
string Address
|
|
|
|
uint16 MappingBehavior
|
|
|
|
string VirtualSystemIdentifiers[]
|
|
|
|
boolean StaticMacAddress
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Msvm_VirtualSwitchManagementService
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
uint16 OperationalStatus[]
|
|
|
|
string StatusDescriptions[]
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
uint16 EnabledState
|
|
|
|
string OtherEnabledState
|
|
|
|
uint16 RequestedState
|
|
|
|
uint16 EnabledDefault
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
string SystemCreationClassName
|
|
|
|
string SystemName
|
|
|
|
string CreationClassName
|
|
|
|
string Name
|
|
|
|
string PrimaryOwnerName
|
|
|
|
string PrimaryOwnerContact
|
|
|
|
string StartMode
|
|
|
|
boolean Started
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class Msvm_VirtualHardDiskSettingData
|
|
|
|
string InstanceID
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
uint16 Type
|
|
|
|
uint16 Format
|
|
|
|
string Path
|
|
|
|
string ParentPath
|
|
|
|
uint64 MaxInternalSize
|
|
|
|
uint32 BlockSize
|
|
|
|
uint32 LogicalSectorSize
|
|
|
|
uint32 PhysicalSectorSize
|
|
|
|
string VirtualDiskId
|
|
|
|
end
|
2017-06-27 19:13:26 +00:00
|
|
|
|
|
|
|
class Msvm_Keyboard
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
string Name
|
|
|
|
uint16 OperationalStatus[]
|
|
|
|
string StatusDescriptions[]
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
uint16 EnabledState
|
|
|
|
string OtherEnabledState
|
|
|
|
uint16 RequestedState
|
|
|
|
uint16 EnabledDefault
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
string SystemCreationClassName
|
|
|
|
string SystemName
|
|
|
|
string CreationClassName
|
|
|
|
string DeviceID
|
|
|
|
boolean PowerManagementSupported
|
|
|
|
uint16 PowerManagementCapabilities[]
|
|
|
|
uint16 Availability
|
|
|
|
uint16 StatusInfo
|
|
|
|
uint32 LastErrorCode
|
|
|
|
string ErrorDescription
|
|
|
|
boolean ErrorCleared
|
|
|
|
string OtherIdentifyingInfo[]
|
|
|
|
uint64 PowerOnHours
|
|
|
|
uint64 TotalPowerOnHours
|
|
|
|
string IdentifyingDescriptions[]
|
|
|
|
uint16 AdditionalAvailability[]
|
|
|
|
uint64 MaxQuiesceTime
|
|
|
|
uint16 LocationIndicator
|
|
|
|
boolean IsLocked
|
|
|
|
string Layout
|
|
|
|
uint16 NumberOfFunctionKeys
|
|
|
|
uint16 Password
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
class v2/Msvm_Keyboard
|
|
|
|
string InstanceID
|
|
|
|
string Caption
|
|
|
|
string Description
|
|
|
|
string ElementName
|
|
|
|
datetime InstallDate
|
|
|
|
string Name
|
|
|
|
uint16 OperationalStatus[]
|
|
|
|
string StatusDescriptions[]
|
|
|
|
string Status
|
|
|
|
uint16 HealthState
|
|
|
|
uint16 CommunicationStatus
|
|
|
|
uint16 DetailedStatus
|
|
|
|
uint16 OperatingStatus
|
|
|
|
uint16 PrimaryStatus
|
|
|
|
uint16 EnabledState
|
|
|
|
string OtherEnabledState
|
|
|
|
uint16 RequestedState
|
|
|
|
uint16 EnabledDefault
|
|
|
|
datetime TimeOfLastStateChange
|
|
|
|
uint16 AvailableRequestedStates[]
|
|
|
|
uint16 TransitioningToState
|
|
|
|
string SystemCreationClassName
|
|
|
|
string SystemName
|
|
|
|
string CreationClassName
|
|
|
|
string DeviceID
|
|
|
|
boolean PowerManagementSupported
|
|
|
|
uint16 PowerManagementCapabilities[]
|
|
|
|
uint16 Availability
|
|
|
|
uint16 StatusInfo
|
|
|
|
uint32 LastErrorCode
|
|
|
|
string ErrorDescription
|
|
|
|
boolean ErrorCleared
|
|
|
|
string OtherIdentifyingInfo[]
|
|
|
|
uint64 PowerOnHours
|
|
|
|
uint64 TotalPowerOnHours
|
|
|
|
string IdentifyingDescriptions[]
|
|
|
|
uint16 AdditionalAvailability[]
|
|
|
|
uint64 MaxQuiesceTime
|
|
|
|
boolean IsLocked
|
|
|
|
string Layout
|
|
|
|
uint16 NumberOfFunctionKeys
|
|
|
|
uint16 Password
|
|
|
|
boolean UnicodeSupported
|
|
|
|
end
|