Msvm_CompatibilityVector class
References the compatibility info for a virtual machine (VM) (when run on a VM computer system) or a host (when run on a host computer system).
The following syntax is simplified from MOF code and includes all inherited properties.
Syntax
[Dynamic, Provider("VmmsWmiInstanceAndMethodProvider"), AMENDMENT]
class Msvm_CompatibilityVector
{
uint32 VectorId;
uint32 CompareOperation;
uint64 CompatibilityInfo;
};
Members
The Msvm_CompatibilityVector class has these types of members:
Properties
The Msvm_CompatibilityVector class has these properties.
-
CompareOperation
-
-
Data type: uint32
-
Access type: Read-only
Identifies the comparison operation that will return true if and only if two vectors are compatible. The VM's data is on the left hand side of the comparison, and the host's data is on the right hand side.
-
-
Equal (0)
-
Superset (1)
-
Subset (2)
-
Disjoint (3)
-
GreaterThan (4)
-
GreaterThanOrEqual (5)
-
LessThan (6)
-
LessThanOrEqual (7)
-
Multiple (8)
-
Divisible (9)
CompatibilityInfo
-
Data type: uint64
-
Access type: Read-only
The actual compatibility attribute data that is used for comparison.
VectorId
-
Data type: uint32
-
Access type: Read-only
Identifies a compatibility vector that represents a specific attribute. This property is used to match corresponding vectors between a host and a VM.
Remarks
The GetSystemCompatibilityVectors method of the Msvm_VirtualSystemMigrationService class returns an array of Msvm_CompatibilityVector instances for the host (if run on the host) or a VM (if run on the VM). Each Msvm_CompatibilityVector entry in the list describes a compatibility attribute vector. For a VM to be compatible with a host, all of its compatibility attributes must be compatible with the host s attributes.
Each Msvm_CompatibilityVector entry has these properties:
-
VectorId
-
Uniquely identifies the compatibility vector. This is used to match the vectors to compare between a host and a VM.
-
CompareOperation
-
Identifies the comparison operation that determines whether the vectors are compatible.
-
CompatibilityInfo
-
Contains the actual compatibility attribute; This is effectively the attribute payload (e.g. processor feature mask, cache line flush size, etc.)
The set of operations defined for CompareOperation just involve basic integer comparison and bitwise logic. This enables the actual contents of CompatibilityInfo to remain opaque. The set of operations include:
CompareOperation | Description | Pseudocode Comparison |
---|---|---|
VmCcEqual | VmAttr must equal HostAttr | If (VmAttr == HostAttr) |
VmCcSuperSet | VmAttr must be a superset of HostAttr | If ((VmAttr & HostAttr) == HostAttr) |
VmCcSubSet | VmAttr must be a subset of HostAttr | If ((VmAttr & HostAttr) == VmAttr) |
VmCcDisjointSet | VmAttr must be a disjoint set from HostAttr | If ((VmAttr & HostAttr) == 0) |
VmCcGreater | VmAttr must be greater than HostAttr | If (VmAttr > HostAttr) |
VmCcGreaterEqual | VmAttr must be greater than or equal to HostAttr | If (VmAttr >= HostAttr) |
VmCcLess | VmAttr must be less than HostAttr | If (VmAttr < HostAttr) |
VmCcLessEqual | VmAttr must be less than or equal to HostAttr | If (VmAttr <= HostAttr) |
VmCcMultiple | VmAttr must be a multiple of HostAttr | If ((VmAttr % HostAttr) == 0) |
VmCcDivisor | VmAttr must be a divisor of HostAttr | If ((HostAttr % VmAttr) == 0) |
SCVMM needs to do these steps to determine whether a VM is compatible with a host.
To determine whether a VM is compatible with a host
- Iterate through all of the Msvm_CompatibilityVector elements for the VM.
- For each Msvm_CompatibilityVector element, use the compatibility operation specified in CompareOperation to compare the VM s hardware compatibility vector with the corresponding compatibility vector for the host.
- If the all of the Msvm_CompatibilityVector elements from the VM are deemed compatible, the VM is compatible with the host (from a processor feature perspective).
Requirements
Requirement | Value |
---|---|
Minimum supported client |
Windows 8.1 [desktop apps only] |
Minimum supported server |
Windows Server 2012 R2 [desktop apps only] |
Namespace |
Root\Virtualization\V2 |
MOF |
|
DLL |
|