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

  1. Iterate through all of the Msvm_CompatibilityVector elements for the VM.
  2. 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.
  3. 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
WindowsVirtualization.V2.mof
DLL
Vmms.exe

See also

GetSystemCompatibilityVectors

Msvm_VirtualSystemMigrationService