/* Generated by hyperv_wmi_generator.py */



/****************************************************
 * CIM_DataFile
 */

#define CIM_DATAFILE_CLASSNAME \
    "CIM_DataFile"

#define CIM_DATAFILE_WQL_SELECT \
    "SELECT * FROM CIM_DataFile "

extern hypervWmiClassInfoListPtr CIM_DataFile_WmiInfo;

#define CIM_DATAFILE_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/CIM_DataFile"

struct _CIM_DataFile_Data {
    XML_TYPE_UINT32 AccessMask;
    XML_TYPE_BOOL Archive;
    XML_TYPE_STR Caption;
    XML_TYPE_BOOL Compressed;
    XML_TYPE_STR CompressionMethod;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR CreationDate;
    XML_TYPE_STR CSCreationClassName;
    XML_TYPE_STR CSName;
    XML_TYPE_STR Description;
    XML_TYPE_STR Drive;
    XML_TYPE_STR EightDotThreeFileName;
    XML_TYPE_BOOL Encrypted;
    XML_TYPE_STR EncryptionMethod;
    XML_TYPE_STR Extension;
    XML_TYPE_STR FileName;
    XML_TYPE_UINT64 FileSize;
    XML_TYPE_STR FileType;
    XML_TYPE_STR FSCreationClassName;
    XML_TYPE_STR FSName;
    XML_TYPE_BOOL Hidden;
    XML_TYPE_STR InstallDate;
    XML_TYPE_UINT64 InUseCount;
    XML_TYPE_STR LastAccessed;
    XML_TYPE_STR LastModified;
    XML_TYPE_STR Manufacturer;
    XML_TYPE_STR Name;
    XML_TYPE_STR Path;
    XML_TYPE_BOOL Readable;
    XML_TYPE_STR Status;
    XML_TYPE_BOOL System;
    XML_TYPE_STR Version;
    XML_TYPE_BOOL Writeable;
};

SER_DECLARE_TYPE(CIM_DataFile_Data);

/* must match hypervObject */
struct _CIM_DataFile {
    union {
        CIM_DataFile_Data *common;
        CIM_DataFile_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    CIM_DataFile *next;
};



/****************************************************
 * Msvm_AllocationCapabilities
 */

#define MSVM_ALLOCATIONCAPABILITIES_CLASSNAME \
    "Msvm_AllocationCapabilities"

#define MSVM_ALLOCATIONCAPABILITIES_WQL_SELECT \
    "SELECT * FROM Msvm_AllocationCapabilities "

extern hypervWmiClassInfoListPtr Msvm_AllocationCapabilities_WmiInfo;

#define MSVM_ALLOCATIONCAPABILITIES_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_AllocationCapabilities"

struct _Msvm_AllocationCapabilities_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_STR InstanceID;
    XML_TYPE_STR OtherResourceType;
    XML_TYPE_UINT16 RequestTypesSupported;
    XML_TYPE_STR ResourceSubType;
    XML_TYPE_UINT16 ResourceType;
    XML_TYPE_UINT16 SharingMode;
    XML_TYPE_DYN_ARRAY SupportedAddStates;
    XML_TYPE_DYN_ARRAY SupportedRemoveStates;
};

SER_DECLARE_TYPE(Msvm_AllocationCapabilities_Data);

/* must match hypervObject */
struct _Msvm_AllocationCapabilities {
    union {
        Msvm_AllocationCapabilities_Data *common;
        Msvm_AllocationCapabilities_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_AllocationCapabilities *next;
};



/****************************************************
 * Msvm_ComputerSystem
 */

#define MSVM_COMPUTERSYSTEM_CLASSNAME \
    "Msvm_ComputerSystem"

#define MSVM_COMPUTERSYSTEM_WQL_SELECT \
    "SELECT * FROM Msvm_ComputerSystem "

extern hypervWmiClassInfoListPtr Msvm_ComputerSystem_WmiInfo;

struct _Msvm_ComputerSystem_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_DYN_ARRAY Dedicated;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_DYN_ARRAY IdentifyingDescriptions;
    XML_TYPE_STR InstallDate;
    XML_TYPE_STR NameFormat;
    XML_TYPE_STR Name;
    XML_TYPE_UINT64 OnTimeInMilliseconds;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_DYN_ARRAY OtherDedicatedDescriptions;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_DYN_ARRAY OtherIdentifyingInfo;
    XML_TYPE_DYN_ARRAY PowerManagementCapabilities;
    XML_TYPE_STR PrimaryOwnerContact;
    XML_TYPE_STR PrimaryOwnerName;
    XML_TYPE_UINT32 ProcessID;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_UINT16 ResetCapability;
    XML_TYPE_DYN_ARRAY Roles;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_STR Status;
    XML_TYPE_STR TimeOfLastConfigurationChange;
    XML_TYPE_STR TimeOfLastStateChange;
};

#define MSVM_COMPUTERSYSTEM_V1_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_ComputerSystem"

struct _Msvm_ComputerSystem_v1_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_DYN_ARRAY Dedicated;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_DYN_ARRAY IdentifyingDescriptions;
    XML_TYPE_STR InstallDate;
    XML_TYPE_STR NameFormat;
    XML_TYPE_STR Name;
    XML_TYPE_UINT64 OnTimeInMilliseconds;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_DYN_ARRAY OtherDedicatedDescriptions;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_DYN_ARRAY OtherIdentifyingInfo;
    XML_TYPE_DYN_ARRAY PowerManagementCapabilities;
    XML_TYPE_STR PrimaryOwnerContact;
    XML_TYPE_STR PrimaryOwnerName;
    XML_TYPE_UINT32 ProcessID;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_UINT16 ResetCapability;
    XML_TYPE_DYN_ARRAY Roles;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_STR Status;
    XML_TYPE_STR TimeOfLastConfigurationChange;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_DYN_ARRAY AssignedNumaNodeList;
};

SER_DECLARE_TYPE(Msvm_ComputerSystem_v1_Data);
#define MSVM_COMPUTERSYSTEM_V2_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/v2/Msvm_ComputerSystem"

struct _Msvm_ComputerSystem_v2_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_DYN_ARRAY Dedicated;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_DYN_ARRAY IdentifyingDescriptions;
    XML_TYPE_STR InstallDate;
    XML_TYPE_STR NameFormat;
    XML_TYPE_STR Name;
    XML_TYPE_UINT64 OnTimeInMilliseconds;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_DYN_ARRAY OtherDedicatedDescriptions;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_DYN_ARRAY OtherIdentifyingInfo;
    XML_TYPE_DYN_ARRAY PowerManagementCapabilities;
    XML_TYPE_STR PrimaryOwnerContact;
    XML_TYPE_STR PrimaryOwnerName;
    XML_TYPE_UINT32 ProcessID;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_UINT16 ResetCapability;
    XML_TYPE_DYN_ARRAY Roles;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_STR Status;
    XML_TYPE_STR TimeOfLastConfigurationChange;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_UINT16 CommunicationStatus;
    XML_TYPE_UINT16 OperatingStatus;
    XML_TYPE_UINT16 TransitioningToState;
    XML_TYPE_UINT16 DetailedStatus;
    XML_TYPE_UINT16 PrimaryStatus;
    XML_TYPE_STR InstanceID;
    XML_TYPE_DYN_ARRAY AvailableRequestedStates;
    XML_TYPE_UINT16 NumberOfNumaNodes;
    XML_TYPE_UINT16 ReplicationState;
    XML_TYPE_UINT16 ReplicationHealth;
    XML_TYPE_UINT16 ReplicationMode;
    XML_TYPE_UINT16 FailedOverReplicationType;
    XML_TYPE_UINT16 LastReplicationType;
    XML_TYPE_STR LastApplicationConsistentReplicationTime;
    XML_TYPE_STR LastReplicationTime;
    XML_TYPE_STR LastSuccessfulBackupTime;
    XML_TYPE_UINT16 EnhancedSessionModeState;
};

SER_DECLARE_TYPE(Msvm_ComputerSystem_v2_Data);

/* must match hypervObject */
struct _Msvm_ComputerSystem {
    union {
        Msvm_ComputerSystem_Data *common;
        Msvm_ComputerSystem_v1_Data *v1;
        Msvm_ComputerSystem_v2_Data *v2;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_ComputerSystem *next;
};



/****************************************************
 * Msvm_ConcreteJob
 */

#define MSVM_CONCRETEJOB_CLASSNAME \
    "Msvm_ConcreteJob"

#define MSVM_CONCRETEJOB_WQL_SELECT \
    "SELECT * FROM Msvm_ConcreteJob "

extern hypervWmiClassInfoListPtr Msvm_ConcreteJob_WmiInfo;

struct _Msvm_ConcreteJob_Data {
    XML_TYPE_BOOL Cancellable;
    XML_TYPE_STR Caption;
    XML_TYPE_BOOL DeleteOnCompletion;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElapsedTime;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 ErrorCode;
    XML_TYPE_STR ErrorDescription;
    XML_TYPE_STR ErrorSummaryDescription;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_STR InstallDate;
    XML_TYPE_STR InstanceID;
    XML_TYPE_UINT32 JobRunTimes;
    XML_TYPE_UINT16 JobState;
    XML_TYPE_STR JobStatus;
    XML_TYPE_UINT16 LocalOrUtcTime;
    XML_TYPE_STR Name;
    XML_TYPE_STR Notify;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_STR OtherRecoveryAction;
    XML_TYPE_STR Owner;
    XML_TYPE_UINT16 PercentComplete;
    XML_TYPE_UINT32 Priority;
    XML_TYPE_UINT16 RecoveryAction;
    XML_TYPE_UINT8 RunMonth;
    XML_TYPE_STR RunStartInterval;
    XML_TYPE_STR ScheduledStartTime;
    XML_TYPE_STR StartTime;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_STR Status;
    XML_TYPE_STR TimeBeforeRemoval;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_STR TimeSubmitted;
    XML_TYPE_STR UntilTime;
};

#define MSVM_CONCRETEJOB_V1_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_ConcreteJob"

struct _Msvm_ConcreteJob_v1_Data {
    XML_TYPE_BOOL Cancellable;
    XML_TYPE_STR Caption;
    XML_TYPE_BOOL DeleteOnCompletion;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElapsedTime;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 ErrorCode;
    XML_TYPE_STR ErrorDescription;
    XML_TYPE_STR ErrorSummaryDescription;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_STR InstallDate;
    XML_TYPE_STR InstanceID;
    XML_TYPE_UINT32 JobRunTimes;
    XML_TYPE_UINT16 JobState;
    XML_TYPE_STR JobStatus;
    XML_TYPE_UINT16 LocalOrUtcTime;
    XML_TYPE_STR Name;
    XML_TYPE_STR Notify;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_STR OtherRecoveryAction;
    XML_TYPE_STR Owner;
    XML_TYPE_UINT16 PercentComplete;
    XML_TYPE_UINT32 Priority;
    XML_TYPE_UINT16 RecoveryAction;
    XML_TYPE_UINT8 RunMonth;
    XML_TYPE_STR RunStartInterval;
    XML_TYPE_STR ScheduledStartTime;
    XML_TYPE_STR StartTime;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_STR Status;
    XML_TYPE_STR TimeBeforeRemoval;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_STR TimeSubmitted;
    XML_TYPE_STR UntilTime;
    XML_TYPE_INT8 RunDayOfWeek;
    XML_TYPE_INT8 RunDay;
};

SER_DECLARE_TYPE(Msvm_ConcreteJob_v1_Data);
#define MSVM_CONCRETEJOB_V2_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/v2/Msvm_ConcreteJob"

struct _Msvm_ConcreteJob_v2_Data {
    XML_TYPE_BOOL Cancellable;
    XML_TYPE_STR Caption;
    XML_TYPE_BOOL DeleteOnCompletion;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElapsedTime;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 ErrorCode;
    XML_TYPE_STR ErrorDescription;
    XML_TYPE_STR ErrorSummaryDescription;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_STR InstallDate;
    XML_TYPE_STR InstanceID;
    XML_TYPE_UINT32 JobRunTimes;
    XML_TYPE_UINT16 JobState;
    XML_TYPE_STR JobStatus;
    XML_TYPE_UINT16 LocalOrUtcTime;
    XML_TYPE_STR Name;
    XML_TYPE_STR Notify;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_STR OtherRecoveryAction;
    XML_TYPE_STR Owner;
    XML_TYPE_UINT16 PercentComplete;
    XML_TYPE_UINT32 Priority;
    XML_TYPE_UINT16 RecoveryAction;
    XML_TYPE_UINT8 RunMonth;
    XML_TYPE_STR RunStartInterval;
    XML_TYPE_STR ScheduledStartTime;
    XML_TYPE_STR StartTime;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_STR Status;
    XML_TYPE_STR TimeBeforeRemoval;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_STR TimeSubmitted;
    XML_TYPE_STR UntilTime;
    XML_TYPE_INT8 RunDay;
    XML_TYPE_UINT16 OperatingStatus;
    XML_TYPE_UINT16 PrimaryStatus;
    XML_TYPE_UINT16 CommunicationStatus;
    XML_TYPE_INT8 RunDayOfWeek;
    XML_TYPE_UINT16 DetailedStatus;
    XML_TYPE_UINT16 JobType;
};

SER_DECLARE_TYPE(Msvm_ConcreteJob_v2_Data);

/* must match hypervObject */
struct _Msvm_ConcreteJob {
    union {
        Msvm_ConcreteJob_Data *common;
        Msvm_ConcreteJob_v1_Data *v1;
        Msvm_ConcreteJob_v2_Data *v2;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_ConcreteJob *next;
};



/****************************************************
 * Msvm_Keyboard
 */

#define MSVM_KEYBOARD_CLASSNAME \
    "Msvm_Keyboard"

#define MSVM_KEYBOARD_WQL_SELECT \
    "SELECT * FROM Msvm_Keyboard "

extern hypervWmiClassInfoListPtr Msvm_Keyboard_WmiInfo;

struct _Msvm_Keyboard_Data {
    XML_TYPE_DYN_ARRAY AdditionalAvailability;
    XML_TYPE_UINT16 Availability;
    XML_TYPE_STR Caption;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR Description;
    XML_TYPE_STR DeviceID;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_BOOL ErrorCleared;
    XML_TYPE_STR ErrorDescription;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_DYN_ARRAY IdentifyingDescriptions;
    XML_TYPE_STR InstallDate;
    XML_TYPE_BOOL IsLocked;
    XML_TYPE_UINT32 LastErrorCode;
    XML_TYPE_STR Layout;
    XML_TYPE_UINT64 MaxQuiesceTime;
    XML_TYPE_STR Name;
    XML_TYPE_UINT16 NumberOfFunctionKeys;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_DYN_ARRAY OtherIdentifyingInfo;
    XML_TYPE_UINT16 Password;
    XML_TYPE_DYN_ARRAY PowerManagementCapabilities;
    XML_TYPE_BOOL PowerManagementSupported;
    XML_TYPE_UINT64 PowerOnHours;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_UINT16 StatusInfo;
    XML_TYPE_STR Status;
    XML_TYPE_STR SystemCreationClassName;
    XML_TYPE_STR SystemName;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_UINT64 TotalPowerOnHours;
};

#define MSVM_KEYBOARD_V1_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_Keyboard"

struct _Msvm_Keyboard_v1_Data {
    XML_TYPE_DYN_ARRAY AdditionalAvailability;
    XML_TYPE_UINT16 Availability;
    XML_TYPE_STR Caption;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR Description;
    XML_TYPE_STR DeviceID;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_BOOL ErrorCleared;
    XML_TYPE_STR ErrorDescription;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_DYN_ARRAY IdentifyingDescriptions;
    XML_TYPE_STR InstallDate;
    XML_TYPE_BOOL IsLocked;
    XML_TYPE_UINT32 LastErrorCode;
    XML_TYPE_STR Layout;
    XML_TYPE_UINT64 MaxQuiesceTime;
    XML_TYPE_STR Name;
    XML_TYPE_UINT16 NumberOfFunctionKeys;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_DYN_ARRAY OtherIdentifyingInfo;
    XML_TYPE_UINT16 Password;
    XML_TYPE_DYN_ARRAY PowerManagementCapabilities;
    XML_TYPE_BOOL PowerManagementSupported;
    XML_TYPE_UINT64 PowerOnHours;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_UINT16 StatusInfo;
    XML_TYPE_STR Status;
    XML_TYPE_STR SystemCreationClassName;
    XML_TYPE_STR SystemName;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_UINT64 TotalPowerOnHours;
    XML_TYPE_UINT16 LocationIndicator;
};

SER_DECLARE_TYPE(Msvm_Keyboard_v1_Data);
#define MSVM_KEYBOARD_V2_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/v2/Msvm_Keyboard"

struct _Msvm_Keyboard_v2_Data {
    XML_TYPE_DYN_ARRAY AdditionalAvailability;
    XML_TYPE_UINT16 Availability;
    XML_TYPE_STR Caption;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR Description;
    XML_TYPE_STR DeviceID;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_BOOL ErrorCleared;
    XML_TYPE_STR ErrorDescription;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_DYN_ARRAY IdentifyingDescriptions;
    XML_TYPE_STR InstallDate;
    XML_TYPE_BOOL IsLocked;
    XML_TYPE_UINT32 LastErrorCode;
    XML_TYPE_STR Layout;
    XML_TYPE_UINT64 MaxQuiesceTime;
    XML_TYPE_STR Name;
    XML_TYPE_UINT16 NumberOfFunctionKeys;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_DYN_ARRAY OtherIdentifyingInfo;
    XML_TYPE_UINT16 Password;
    XML_TYPE_DYN_ARRAY PowerManagementCapabilities;
    XML_TYPE_BOOL PowerManagementSupported;
    XML_TYPE_UINT64 PowerOnHours;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_UINT16 StatusInfo;
    XML_TYPE_STR Status;
    XML_TYPE_STR SystemCreationClassName;
    XML_TYPE_STR SystemName;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_UINT64 TotalPowerOnHours;
    XML_TYPE_UINT16 OperatingStatus;
    XML_TYPE_STR InstanceID;
    XML_TYPE_UINT16 DetailedStatus;
    XML_TYPE_UINT16 CommunicationStatus;
    XML_TYPE_UINT16 PrimaryStatus;
    XML_TYPE_DYN_ARRAY AvailableRequestedStates;
    XML_TYPE_UINT16 TransitioningToState;
    XML_TYPE_BOOL UnicodeSupported;
};

SER_DECLARE_TYPE(Msvm_Keyboard_v2_Data);

/* must match hypervObject */
struct _Msvm_Keyboard {
    union {
        Msvm_Keyboard_Data *common;
        Msvm_Keyboard_v1_Data *v1;
        Msvm_Keyboard_v2_Data *v2;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_Keyboard *next;
};



/****************************************************
 * Msvm_MemorySettingData
 */

#define MSVM_MEMORYSETTINGDATA_CLASSNAME \
    "Msvm_MemorySettingData"

#define MSVM_MEMORYSETTINGDATA_WQL_SELECT \
    "SELECT * FROM Msvm_MemorySettingData "

extern hypervWmiClassInfoListPtr Msvm_MemorySettingData_WmiInfo;

struct _Msvm_MemorySettingData_Data {
    XML_TYPE_STR Address;
    XML_TYPE_STR AllocationUnits;
    XML_TYPE_BOOL AutomaticAllocation;
    XML_TYPE_BOOL AutomaticDeallocation;
    XML_TYPE_STR Caption;
    XML_TYPE_DYN_ARRAY Connection;
    XML_TYPE_UINT16 ConsumerVisibility;
    XML_TYPE_STR Description;
    XML_TYPE_BOOL DynamicMemoryEnabled;
    XML_TYPE_STR ElementName;
    XML_TYPE_DYN_ARRAY HostResource;
    XML_TYPE_STR InstanceID;
    XML_TYPE_BOOL IsVirtualized;
    XML_TYPE_UINT64 Limit;
    XML_TYPE_UINT16 MappingBehavior;
    XML_TYPE_STR OtherResourceType;
    XML_TYPE_STR Parent;
    XML_TYPE_STR PoolID;
    XML_TYPE_UINT64 Reservation;
    XML_TYPE_STR ResourceSubType;
    XML_TYPE_UINT16 ResourceType;
    XML_TYPE_UINT64 VirtualQuantity;
    XML_TYPE_UINT32 Weight;
};

#define MSVM_MEMORYSETTINGDATA_V1_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_MemorySettingData"

struct _Msvm_MemorySettingData_v1_Data {
    XML_TYPE_STR Address;
    XML_TYPE_STR AllocationUnits;
    XML_TYPE_BOOL AutomaticAllocation;
    XML_TYPE_BOOL AutomaticDeallocation;
    XML_TYPE_STR Caption;
    XML_TYPE_DYN_ARRAY Connection;
    XML_TYPE_UINT16 ConsumerVisibility;
    XML_TYPE_STR Description;
    XML_TYPE_BOOL DynamicMemoryEnabled;
    XML_TYPE_STR ElementName;
    XML_TYPE_DYN_ARRAY HostResource;
    XML_TYPE_STR InstanceID;
    XML_TYPE_BOOL IsVirtualized;
    XML_TYPE_UINT64 Limit;
    XML_TYPE_UINT16 MappingBehavior;
    XML_TYPE_STR OtherResourceType;
    XML_TYPE_STR Parent;
    XML_TYPE_STR PoolID;
    XML_TYPE_UINT64 Reservation;
    XML_TYPE_STR ResourceSubType;
    XML_TYPE_UINT16 ResourceType;
    XML_TYPE_UINT64 VirtualQuantity;
    XML_TYPE_UINT32 Weight;
    XML_TYPE_STR DeviceIDFormat;
    XML_TYPE_STR DeviceID;
};

SER_DECLARE_TYPE(Msvm_MemorySettingData_v1_Data);
#define MSVM_MEMORYSETTINGDATA_V2_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/v2/Msvm_MemorySettingData"

struct _Msvm_MemorySettingData_v2_Data {
    XML_TYPE_STR Address;
    XML_TYPE_STR AllocationUnits;
    XML_TYPE_BOOL AutomaticAllocation;
    XML_TYPE_BOOL AutomaticDeallocation;
    XML_TYPE_STR Caption;
    XML_TYPE_DYN_ARRAY Connection;
    XML_TYPE_UINT16 ConsumerVisibility;
    XML_TYPE_STR Description;
    XML_TYPE_BOOL DynamicMemoryEnabled;
    XML_TYPE_STR ElementName;
    XML_TYPE_DYN_ARRAY HostResource;
    XML_TYPE_STR InstanceID;
    XML_TYPE_BOOL IsVirtualized;
    XML_TYPE_UINT64 Limit;
    XML_TYPE_UINT16 MappingBehavior;
    XML_TYPE_STR OtherResourceType;
    XML_TYPE_STR Parent;
    XML_TYPE_STR PoolID;
    XML_TYPE_UINT64 Reservation;
    XML_TYPE_STR ResourceSubType;
    XML_TYPE_UINT16 ResourceType;
    XML_TYPE_UINT64 VirtualQuantity;
    XML_TYPE_UINT32 Weight;
    XML_TYPE_STR AddressOnParent;
    XML_TYPE_UINT32 TargetMemoryBuffer;
    XML_TYPE_STR VirtualQuantityUnits;
    XML_TYPE_BOOL SwapFilesInUse;
    XML_TYPE_UINT64 MaxMemoryBlocksPerNumaNode;
};

SER_DECLARE_TYPE(Msvm_MemorySettingData_v2_Data);

/* must match hypervObject */
struct _Msvm_MemorySettingData {
    union {
        Msvm_MemorySettingData_Data *common;
        Msvm_MemorySettingData_v1_Data *v1;
        Msvm_MemorySettingData_v2_Data *v2;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_MemorySettingData *next;
};



/****************************************************
 * Msvm_ProcessorSettingData
 */

#define MSVM_PROCESSORSETTINGDATA_CLASSNAME \
    "Msvm_ProcessorSettingData"

#define MSVM_PROCESSORSETTINGDATA_WQL_SELECT \
    "SELECT * FROM Msvm_ProcessorSettingData "

extern hypervWmiClassInfoListPtr Msvm_ProcessorSettingData_WmiInfo;

struct _Msvm_ProcessorSettingData_Data {
    XML_TYPE_STR Address;
    XML_TYPE_STR AllocationUnits;
    XML_TYPE_BOOL AutomaticAllocation;
    XML_TYPE_BOOL AutomaticDeallocation;
    XML_TYPE_STR Caption;
    XML_TYPE_DYN_ARRAY Connection;
    XML_TYPE_UINT16 ConsumerVisibility;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_DYN_ARRAY HostResource;
    XML_TYPE_STR InstanceID;
    XML_TYPE_BOOL LimitCPUID;
    XML_TYPE_BOOL LimitProcessorFeatures;
    XML_TYPE_UINT64 Limit;
    XML_TYPE_UINT16 MappingBehavior;
    XML_TYPE_STR OtherResourceType;
    XML_TYPE_STR Parent;
    XML_TYPE_STR PoolID;
    XML_TYPE_UINT64 Reservation;
    XML_TYPE_STR ResourceSubType;
    XML_TYPE_UINT16 ResourceType;
    XML_TYPE_UINT64 VirtualQuantity;
    XML_TYPE_UINT32 Weight;
};

#define MSVM_PROCESSORSETTINGDATA_V1_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_ProcessorSettingData"

struct _Msvm_ProcessorSettingData_v1_Data {
    XML_TYPE_STR Address;
    XML_TYPE_STR AllocationUnits;
    XML_TYPE_BOOL AutomaticAllocation;
    XML_TYPE_BOOL AutomaticDeallocation;
    XML_TYPE_STR Caption;
    XML_TYPE_DYN_ARRAY Connection;
    XML_TYPE_UINT16 ConsumerVisibility;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_DYN_ARRAY HostResource;
    XML_TYPE_STR InstanceID;
    XML_TYPE_BOOL LimitCPUID;
    XML_TYPE_BOOL LimitProcessorFeatures;
    XML_TYPE_UINT64 Limit;
    XML_TYPE_UINT16 MappingBehavior;
    XML_TYPE_STR OtherResourceType;
    XML_TYPE_STR Parent;
    XML_TYPE_STR PoolID;
    XML_TYPE_UINT64 Reservation;
    XML_TYPE_STR ResourceSubType;
    XML_TYPE_UINT16 ResourceType;
    XML_TYPE_UINT64 VirtualQuantity;
    XML_TYPE_UINT32 Weight;
    XML_TYPE_STR DeviceIDFormat;
    XML_TYPE_UINT16 ProcessorsPerSocket;
    XML_TYPE_UINT16 SocketCount;
    XML_TYPE_BOOL ThreadsEnabled;
    XML_TYPE_BOOL IsVirtualized;
    XML_TYPE_STR DeviceID;
};

SER_DECLARE_TYPE(Msvm_ProcessorSettingData_v1_Data);
#define MSVM_PROCESSORSETTINGDATA_V2_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/v2/Msvm_ProcessorSettingData"

struct _Msvm_ProcessorSettingData_v2_Data {
    XML_TYPE_STR Address;
    XML_TYPE_STR AllocationUnits;
    XML_TYPE_BOOL AutomaticAllocation;
    XML_TYPE_BOOL AutomaticDeallocation;
    XML_TYPE_STR Caption;
    XML_TYPE_DYN_ARRAY Connection;
    XML_TYPE_UINT16 ConsumerVisibility;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_DYN_ARRAY HostResource;
    XML_TYPE_STR InstanceID;
    XML_TYPE_BOOL LimitCPUID;
    XML_TYPE_BOOL LimitProcessorFeatures;
    XML_TYPE_UINT64 Limit;
    XML_TYPE_UINT16 MappingBehavior;
    XML_TYPE_STR OtherResourceType;
    XML_TYPE_STR Parent;
    XML_TYPE_STR PoolID;
    XML_TYPE_UINT64 Reservation;
    XML_TYPE_STR ResourceSubType;
    XML_TYPE_UINT16 ResourceType;
    XML_TYPE_UINT64 VirtualQuantity;
    XML_TYPE_UINT32 Weight;
    XML_TYPE_STR AddressOnParent;
    XML_TYPE_STR VirtualQuantityUnits;
    XML_TYPE_UINT64 MaxProcessorsPerNumaNode;
    XML_TYPE_UINT64 MaxNumaNodesPerSocket;
};

SER_DECLARE_TYPE(Msvm_ProcessorSettingData_v2_Data);

/* must match hypervObject */
struct _Msvm_ProcessorSettingData {
    union {
        Msvm_ProcessorSettingData_Data *common;
        Msvm_ProcessorSettingData_v1_Data *v1;
        Msvm_ProcessorSettingData_v2_Data *v2;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_ProcessorSettingData *next;
};



/****************************************************
 * Msvm_ResourceAllocationSettingData
 */

#define MSVM_RESOURCEALLOCATIONSETTINGDATA_CLASSNAME \
    "Msvm_ResourceAllocationSettingData"

#define MSVM_RESOURCEALLOCATIONSETTINGDATA_WQL_SELECT \
    "SELECT * FROM Msvm_ResourceAllocationSettingData "

extern hypervWmiClassInfoListPtr Msvm_ResourceAllocationSettingData_WmiInfo;

#define MSVM_RESOURCEALLOCATIONSETTINGDATA_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_ResourceAllocationSettingData"

struct _Msvm_ResourceAllocationSettingData_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR Description;
    XML_TYPE_STR InstanceID;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 ResourceType;
    XML_TYPE_STR OtherResourceType;
    XML_TYPE_STR ResourceSubType;
    XML_TYPE_STR PoolID;
    XML_TYPE_UINT16 ConsumerVisibility;
    XML_TYPE_DYN_ARRAY HostResource;
    XML_TYPE_STR AllocationUnits;
    XML_TYPE_UINT64 VirtualQuantity;
    XML_TYPE_UINT64 Reservation;
    XML_TYPE_UINT64 Limit;
    XML_TYPE_UINT32 Weight;
    XML_TYPE_BOOL AutomaticAllocation;
    XML_TYPE_BOOL AutomaticDeallocation;
    XML_TYPE_STR Parent;
    XML_TYPE_DYN_ARRAY Connection;
    XML_TYPE_STR Address;
    XML_TYPE_UINT16 MappingBehavior;
    XML_TYPE_DYN_ARRAY VirtualSystemIdentifiers;
};

SER_DECLARE_TYPE(Msvm_ResourceAllocationSettingData_Data);

/* must match hypervObject */
struct _Msvm_ResourceAllocationSettingData {
    union {
        Msvm_ResourceAllocationSettingData_Data *common;
        Msvm_ResourceAllocationSettingData_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_ResourceAllocationSettingData *next;
};



/****************************************************
 * Msvm_SwitchPort
 */

#define MSVM_SWITCHPORT_CLASSNAME \
    "Msvm_SwitchPort"

#define MSVM_SWITCHPORT_WQL_SELECT \
    "SELECT * FROM Msvm_SwitchPort "

extern hypervWmiClassInfoListPtr Msvm_SwitchPort_WmiInfo;

#define MSVM_SWITCHPORT_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_SwitchPort"

struct _Msvm_SwitchPort_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR ElementName;
    XML_TYPE_STR InstallDate;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_STR Status;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_STR SystemCreationClassName;
    XML_TYPE_STR SystemName;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR Description;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_STR Name;
    XML_TYPE_STR NameFormat;
    XML_TYPE_UINT16 ProtocolType;
    XML_TYPE_UINT16 ProtocolIFType;
    XML_TYPE_STR OtherTypeDescription;
    XML_TYPE_BOOL BroadcastResetSupported;
    XML_TYPE_UINT16 PortNumber;
    XML_TYPE_STR ScopeOfResidence;
    XML_TYPE_UINT32 VMQOffloadWeight;
    XML_TYPE_UINT32 ChimneyOffloadWeight;
    XML_TYPE_UINT32 VMQOffloadUsage;
    XML_TYPE_UINT32 ChimneyOffloadUsage;
    XML_TYPE_UINT32 VMQOffloadLimit;
    XML_TYPE_UINT32 ChimneyOffloadLimit;
    XML_TYPE_BOOL AllowMacSpoofing;
};

SER_DECLARE_TYPE(Msvm_SwitchPort_Data);

/* must match hypervObject */
struct _Msvm_SwitchPort {
    union {
        Msvm_SwitchPort_Data *common;
        Msvm_SwitchPort_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_SwitchPort *next;
};



/****************************************************
 * Msvm_SyntheticEthernetPortSettingData
 */

#define MSVM_SYNTHETICETHERNETPORTSETTINGDATA_CLASSNAME \
    "Msvm_SyntheticEthernetPortSettingData"

#define MSVM_SYNTHETICETHERNETPORTSETTINGDATA_WQL_SELECT \
    "SELECT * FROM Msvm_SyntheticEthernetPortSettingData "

extern hypervWmiClassInfoListPtr Msvm_SyntheticEthernetPortSettingData_WmiInfo;

#define MSVM_SYNTHETICETHERNETPORTSETTINGDATA_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_SyntheticEthernetPortSettingData"

struct _Msvm_SyntheticEthernetPortSettingData_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR Description;
    XML_TYPE_STR InstanceID;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 ResourceType;
    XML_TYPE_STR OtherResourceType;
    XML_TYPE_STR ResourceSubType;
    XML_TYPE_STR PoolID;
    XML_TYPE_UINT16 ConsumerVisibility;
    XML_TYPE_DYN_ARRAY HostResource;
    XML_TYPE_STR AllocationUnits;
    XML_TYPE_UINT64 VirtualQuantity;
    XML_TYPE_UINT64 Reservation;
    XML_TYPE_UINT64 Limit;
    XML_TYPE_UINT32 Weight;
    XML_TYPE_BOOL AutomaticAllocation;
    XML_TYPE_BOOL AutomaticDeallocation;
    XML_TYPE_STR Parent;
    XML_TYPE_DYN_ARRAY Connection;
    XML_TYPE_STR Address;
    XML_TYPE_UINT16 MappingBehavior;
    XML_TYPE_DYN_ARRAY VirtualSystemIdentifiers;
    XML_TYPE_BOOL StaticMacAddress;
};

SER_DECLARE_TYPE(Msvm_SyntheticEthernetPortSettingData_Data);

/* must match hypervObject */
struct _Msvm_SyntheticEthernetPortSettingData {
    union {
        Msvm_SyntheticEthernetPortSettingData_Data *common;
        Msvm_SyntheticEthernetPortSettingData_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_SyntheticEthernetPortSettingData *next;
};



/****************************************************
 * Msvm_VirtualHardDiskSettingData
 */

#define MSVM_VIRTUALHARDDISKSETTINGDATA_CLASSNAME \
    "Msvm_VirtualHardDiskSettingData"

#define MSVM_VIRTUALHARDDISKSETTINGDATA_WQL_SELECT \
    "SELECT * FROM Msvm_VirtualHardDiskSettingData "

extern hypervWmiClassInfoListPtr Msvm_VirtualHardDiskSettingData_WmiInfo;

#define MSVM_VIRTUALHARDDISKSETTINGDATA_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_VirtualHardDiskSettingData"

struct _Msvm_VirtualHardDiskSettingData_Data {
    XML_TYPE_STR InstanceID;
    XML_TYPE_STR Caption;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 Type;
    XML_TYPE_UINT16 Format;
    XML_TYPE_STR Path;
    XML_TYPE_STR ParentPath;
    XML_TYPE_UINT64 MaxInternalSize;
    XML_TYPE_UINT32 BlockSize;
    XML_TYPE_UINT32 LogicalSectorSize;
    XML_TYPE_UINT32 PhysicalSectorSize;
    XML_TYPE_STR VirtualDiskId;
};

SER_DECLARE_TYPE(Msvm_VirtualHardDiskSettingData_Data);

/* must match hypervObject */
struct _Msvm_VirtualHardDiskSettingData {
    union {
        Msvm_VirtualHardDiskSettingData_Data *common;
        Msvm_VirtualHardDiskSettingData_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_VirtualHardDiskSettingData *next;
};



/****************************************************
 * Msvm_VirtualSwitch
 */

#define MSVM_VIRTUALSWITCH_CLASSNAME \
    "Msvm_VirtualSwitch"

#define MSVM_VIRTUALSWITCH_WQL_SELECT \
    "SELECT * FROM Msvm_VirtualSwitch "

extern hypervWmiClassInfoListPtr Msvm_VirtualSwitch_WmiInfo;

#define MSVM_VIRTUALSWITCH_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_VirtualSwitch"

struct _Msvm_VirtualSwitch_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_STR InstallDate;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_STR Status;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR Name;
    XML_TYPE_STR PrimaryOwnerContact;
    XML_TYPE_STR PrimaryOwnerName;
    XML_TYPE_DYN_ARRAY Roles;
    XML_TYPE_STR NameFormat;
    XML_TYPE_DYN_ARRAY OtherIdentifyingInfo;
    XML_TYPE_DYN_ARRAY IdentifyingDescriptions;
    XML_TYPE_DYN_ARRAY Dedicated;
    XML_TYPE_DYN_ARRAY OtherDedicatedDescriptions;
    XML_TYPE_UINT16 ResetCapability;
    XML_TYPE_DYN_ARRAY PowerManagementCapabilities;
    XML_TYPE_STR ScopeOfResidence;
    XML_TYPE_UINT32 NumLearnableAddresses;
    XML_TYPE_UINT32 MaxVMQOffloads;
    XML_TYPE_UINT32 MaxChimneyOffloads;
};

SER_DECLARE_TYPE(Msvm_VirtualSwitch_Data);

/* must match hypervObject */
struct _Msvm_VirtualSwitch {
    union {
        Msvm_VirtualSwitch_Data *common;
        Msvm_VirtualSwitch_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_VirtualSwitch *next;
};



/****************************************************
 * Msvm_VirtualSwitchManagementService
 */

#define MSVM_VIRTUALSWITCHMANAGEMENTSERVICE_CLASSNAME \
    "Msvm_VirtualSwitchManagementService"

#define MSVM_VIRTUALSWITCHMANAGEMENTSERVICE_WQL_SELECT \
    "SELECT * FROM Msvm_VirtualSwitchManagementService "

extern hypervWmiClassInfoListPtr Msvm_VirtualSwitchManagementService_WmiInfo;

#define MSVM_VIRTUALSWITCHMANAGEMENTSERVICE_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_VirtualSwitchManagementService"

struct _Msvm_VirtualSwitchManagementService_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_STR InstallDate;
    XML_TYPE_DYN_ARRAY OperationalStatus;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_STR Status;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_STR SystemCreationClassName;
    XML_TYPE_STR SystemName;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR Name;
    XML_TYPE_STR PrimaryOwnerName;
    XML_TYPE_STR PrimaryOwnerContact;
    XML_TYPE_STR StartMode;
    XML_TYPE_BOOL Started;
};

SER_DECLARE_TYPE(Msvm_VirtualSwitchManagementService_Data);

/* must match hypervObject */
struct _Msvm_VirtualSwitchManagementService {
    union {
        Msvm_VirtualSwitchManagementService_Data *common;
        Msvm_VirtualSwitchManagementService_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_VirtualSwitchManagementService *next;
};



/****************************************************
 * Msvm_VirtualSystemGlobalSettingData
 */

#define MSVM_VIRTUALSYSTEMGLOBALSETTINGDATA_CLASSNAME \
    "Msvm_VirtualSystemGlobalSettingData"

#define MSVM_VIRTUALSYSTEMGLOBALSETTINGDATA_WQL_SELECT \
    "SELECT * FROM Msvm_VirtualSystemGlobalSettingData "

extern hypervWmiClassInfoListPtr Msvm_VirtualSystemGlobalSettingData_WmiInfo;

#define MSVM_VIRTUALSYSTEMGLOBALSETTINGDATA_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_VirtualSystemGlobalSettingData"

struct _Msvm_VirtualSystemGlobalSettingData_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_STR InstanceID;
    XML_TYPE_STR SystemName;
    XML_TYPE_UINT16 SettingType;
    XML_TYPE_UINT16 VirtualSystemType;
    XML_TYPE_STR OtherVirtualSystemType;
    XML_TYPE_BOOL AutoActivate;
    XML_TYPE_STR CreationTime;
    XML_TYPE_STR ExternalDataRoot;
    XML_TYPE_STR SnapshotDataRoot;
    XML_TYPE_UINT16 AutomaticStartupAction;
    XML_TYPE_STR AutomaticStartupActionDelay;
    XML_TYPE_UINT16 AutomaticShutdownAction;
    XML_TYPE_UINT16 AutomaticRecoveryAction;
    XML_TYPE_STR AdditionalRecoveryInformation;
    XML_TYPE_STR ScopeOfResidence;
    XML_TYPE_UINT32 DebugChannelId;
    XML_TYPE_BOOL AllowFullSCSICommandSet;
    XML_TYPE_STR Version;
};

SER_DECLARE_TYPE(Msvm_VirtualSystemGlobalSettingData_Data);

/* must match hypervObject */
struct _Msvm_VirtualSystemGlobalSettingData {
    union {
        Msvm_VirtualSystemGlobalSettingData_Data *common;
        Msvm_VirtualSystemGlobalSettingData_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_VirtualSystemGlobalSettingData *next;
};



/****************************************************
 * Msvm_VirtualSystemManagementService
 */

#define MSVM_VIRTUALSYSTEMMANAGEMENTSERVICE_CLASSNAME \
    "Msvm_VirtualSystemManagementService"

#define MSVM_VIRTUALSYSTEMMANAGEMENTSERVICE_WQL_SELECT \
    "SELECT * FROM Msvm_VirtualSystemManagementService "

extern hypervWmiClassInfoListPtr Msvm_VirtualSystemManagementService_WmiInfo;

struct _Msvm_VirtualSystemManagementService_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_STR InstallDate;
    XML_TYPE_STR Name;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_STR PrimaryOwnerContact;
    XML_TYPE_STR PrimaryOwnerName;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_STR StartMode;
    XML_TYPE_BOOL Started;
    XML_TYPE_STR Status;
    XML_TYPE_STR SystemCreationClassName;
    XML_TYPE_STR SystemName;
    XML_TYPE_STR TimeOfLastStateChange;
};

#define MSVM_VIRTUALSYSTEMMANAGEMENTSERVICE_V1_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_VirtualSystemManagementService"

struct _Msvm_VirtualSystemManagementService_v1_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_STR InstallDate;
    XML_TYPE_STR Name;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_STR PrimaryOwnerContact;
    XML_TYPE_STR PrimaryOwnerName;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_STR StartMode;
    XML_TYPE_BOOL Started;
    XML_TYPE_STR Status;
    XML_TYPE_STR SystemCreationClassName;
    XML_TYPE_STR SystemName;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_STR StatusDescriptions;
    XML_TYPE_UINT16 OperationalStatus;
};

SER_DECLARE_TYPE(Msvm_VirtualSystemManagementService_v1_Data);
#define MSVM_VIRTUALSYSTEMMANAGEMENTSERVICE_V2_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/v2/Msvm_VirtualSystemManagementService"

struct _Msvm_VirtualSystemManagementService_v2_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_UINT16 EnabledDefault;
    XML_TYPE_UINT16 EnabledState;
    XML_TYPE_UINT16 HealthState;
    XML_TYPE_STR InstallDate;
    XML_TYPE_STR Name;
    XML_TYPE_STR OtherEnabledState;
    XML_TYPE_STR PrimaryOwnerContact;
    XML_TYPE_STR PrimaryOwnerName;
    XML_TYPE_UINT16 RequestedState;
    XML_TYPE_STR StartMode;
    XML_TYPE_BOOL Started;
    XML_TYPE_STR Status;
    XML_TYPE_STR SystemCreationClassName;
    XML_TYPE_STR SystemName;
    XML_TYPE_STR TimeOfLastStateChange;
    XML_TYPE_DYN_ARRAY AvailableRequestedStates;
    XML_TYPE_UINT16 TransitioningToState;
    XML_TYPE_UINT16 OperatingStatus;
    XML_TYPE_DYN_ARRAY StatusDescriptions;
    XML_TYPE_STR InstanceID;
    XML_TYPE_UINT16 DetailedStatus;
    XML_TYPE_UINT16 CommunicationStatus;
    XML_TYPE_UINT16 PrimaryStatus;
    XML_TYPE_DYN_ARRAY OperationalStatus;
};

SER_DECLARE_TYPE(Msvm_VirtualSystemManagementService_v2_Data);

/* must match hypervObject */
struct _Msvm_VirtualSystemManagementService {
    union {
        Msvm_VirtualSystemManagementService_Data *common;
        Msvm_VirtualSystemManagementService_v1_Data *v1;
        Msvm_VirtualSystemManagementService_v2_Data *v2;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_VirtualSystemManagementService *next;
};



/****************************************************
 * Msvm_VirtualSystemSettingData
 */

#define MSVM_VIRTUALSYSTEMSETTINGDATA_CLASSNAME \
    "Msvm_VirtualSystemSettingData"

#define MSVM_VIRTUALSYSTEMSETTINGDATA_WQL_SELECT \
    "SELECT * FROM Msvm_VirtualSystemSettingData "

extern hypervWmiClassInfoListPtr Msvm_VirtualSystemSettingData_WmiInfo;

struct _Msvm_VirtualSystemSettingData_Data {
    XML_TYPE_STR BIOSGUID;
    XML_TYPE_BOOL BIOSNumLock;
    XML_TYPE_STR BIOSSerialNumber;
    XML_TYPE_STR BaseBoardSerialNumber;
    XML_TYPE_DYN_ARRAY BootOrder;
    XML_TYPE_STR Caption;
    XML_TYPE_STR ChassisAssetTag;
    XML_TYPE_STR ChassisSerialNumber;
    XML_TYPE_STR CreationTime;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_STR InstanceID;
    XML_TYPE_STR Parent;
};

#define MSVM_VIRTUALSYSTEMSETTINGDATA_V1_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/Msvm_VirtualSystemSettingData"

struct _Msvm_VirtualSystemSettingData_v1_Data {
    XML_TYPE_STR BIOSGUID;
    XML_TYPE_BOOL BIOSNumLock;
    XML_TYPE_STR BIOSSerialNumber;
    XML_TYPE_STR BaseBoardSerialNumber;
    XML_TYPE_DYN_ARRAY BootOrder;
    XML_TYPE_STR Caption;
    XML_TYPE_STR ChassisAssetTag;
    XML_TYPE_STR ChassisSerialNumber;
    XML_TYPE_STR CreationTime;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_STR InstanceID;
    XML_TYPE_STR Parent;
    XML_TYPE_UINT16 SettingType;
    XML_TYPE_STR OtherVirtualSystemType;
    XML_TYPE_UINT16 VirtualSystemType;
    XML_TYPE_BOOL AutoActivate;
    XML_TYPE_STR SystemName;
    XML_TYPE_STR Notes;
    XML_TYPE_DYN_ARRAY NumaNodeList;
    XML_TYPE_BOOL NumaNodesAreRequired;
};

SER_DECLARE_TYPE(Msvm_VirtualSystemSettingData_v1_Data);
#define MSVM_VIRTUALSYSTEMSETTINGDATA_V2_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/v2/Msvm_VirtualSystemSettingData"

struct _Msvm_VirtualSystemSettingData_v2_Data {
    XML_TYPE_STR BIOSGUID;
    XML_TYPE_BOOL BIOSNumLock;
    XML_TYPE_STR BIOSSerialNumber;
    XML_TYPE_STR BaseBoardSerialNumber;
    XML_TYPE_DYN_ARRAY BootOrder;
    XML_TYPE_STR Caption;
    XML_TYPE_STR ChassisAssetTag;
    XML_TYPE_STR ChassisSerialNumber;
    XML_TYPE_STR CreationTime;
    XML_TYPE_STR Description;
    XML_TYPE_STR ElementName;
    XML_TYPE_STR InstanceID;
    XML_TYPE_STR Parent;
    XML_TYPE_STR SwapFileDataRoot;
    XML_TYPE_STR LogDataRoot;
    XML_TYPE_UINT16 AutomaticStartupAction;
    XML_TYPE_STR AutomaticStartupActionDelay;
    XML_TYPE_UINT16 AutomaticStartupActionSequenceNumber;
    XML_TYPE_UINT16 AutomaticShutdownAction;
    XML_TYPE_UINT16 AutomaticRecoveryAction;
    XML_TYPE_STR RecoveryFile;
    XML_TYPE_STR SnapshotDataRoot;
    XML_TYPE_STR ConfigurationDataRoot;
    XML_TYPE_STR ConfigurationFile;
    XML_TYPE_STR ConfigurationID;
    XML_TYPE_DYN_ARRAY Notes;
    XML_TYPE_STR VirtualSystemType;
    XML_TYPE_STR VirtualSystemIdentifier;
    XML_TYPE_STR SuspendDataRoot;
    XML_TYPE_BOOL IsSaved;
    XML_TYPE_STR AdditionalRecoveryInformation;
    XML_TYPE_BOOL AllowFullSCSICommandSet;
    XML_TYPE_UINT32 DebugChannelId;
    XML_TYPE_UINT16 DebugPortEnabled;
    XML_TYPE_UINT32 DebugPort;
    XML_TYPE_STR Version;
    XML_TYPE_BOOL IncrementalBackupEnabled;
    XML_TYPE_BOOL VirtualNumaEnabled;
    XML_TYPE_BOOL AllowReducedFcRedundancy;
    XML_TYPE_STR VirtualSystemSubType;
    XML_TYPE_DYN_ARRAY BootSourceOrder;
    XML_TYPE_BOOL PauseAfterBootFailure;
    XML_TYPE_UINT16 NetworkBootPreferredProtocol;
    XML_TYPE_BOOL SecureBootEnabled;
    XML_TYPE_UINT64 LowMmioGapSize;
};

SER_DECLARE_TYPE(Msvm_VirtualSystemSettingData_v2_Data);

/* must match hypervObject */
struct _Msvm_VirtualSystemSettingData {
    union {
        Msvm_VirtualSystemSettingData_Data *common;
        Msvm_VirtualSystemSettingData_v1_Data *v1;
        Msvm_VirtualSystemSettingData_v2_Data *v2;
    } data;
    hypervWmiClassInfoPtr info;
    Msvm_VirtualSystemSettingData *next;
};



/****************************************************
 * Win32_ComputerSystem
 */

#define WIN32_COMPUTERSYSTEM_CLASSNAME \
    "Win32_ComputerSystem"

#define WIN32_COMPUTERSYSTEM_WQL_SELECT \
    "SELECT * FROM Win32_ComputerSystem "

extern hypervWmiClassInfoListPtr Win32_ComputerSystem_WmiInfo;

#define WIN32_COMPUTERSYSTEM_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_ComputerSystem"

struct _Win32_ComputerSystem_Data {
    XML_TYPE_UINT16 AdminPasswordStatus;
    XML_TYPE_BOOL AutomaticManagedPagefile;
    XML_TYPE_BOOL AutomaticResetBootOption;
    XML_TYPE_BOOL AutomaticResetCapability;
    XML_TYPE_UINT16 BootOptionOnLimit;
    XML_TYPE_UINT16 BootOptionOnWatchDog;
    XML_TYPE_BOOL BootROMSupported;
    XML_TYPE_STR BootupState;
    XML_TYPE_STR Caption;
    XML_TYPE_UINT16 ChassisBootupState;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_INT16 CurrentTimeZone;
    XML_TYPE_BOOL DaylightInEffect;
    XML_TYPE_STR Description;
    XML_TYPE_STR DNSHostName;
    XML_TYPE_STR Domain;
    XML_TYPE_UINT16 DomainRole;
    XML_TYPE_BOOL EnableDaylightSavingsTime;
    XML_TYPE_UINT16 FrontPanelResetStatus;
    XML_TYPE_BOOL InfraredSupported;
    XML_TYPE_STR InstallDate;
    XML_TYPE_UINT16 KeyboardPasswordStatus;
    XML_TYPE_STR LastLoadInfo;
    XML_TYPE_STR Manufacturer;
    XML_TYPE_STR Model;
    XML_TYPE_STR Name;
    XML_TYPE_STR NameFormat;
    XML_TYPE_BOOL NetworkServerModeEnabled;
    XML_TYPE_UINT32 NumberOfLogicalProcessors;
    XML_TYPE_UINT32 NumberOfProcessors;
    XML_TYPE_DYN_ARRAY OEMLogoBitmap;
    XML_TYPE_DYN_ARRAY OEMStringArray;
    XML_TYPE_BOOL PartOfDomain;
    XML_TYPE_INT64 PauseAfterReset;
    XML_TYPE_UINT16 PCSystemType;
    XML_TYPE_DYN_ARRAY PowerManagementCapabilities;
    XML_TYPE_BOOL PowerManagementSupported;
    XML_TYPE_UINT16 PowerOnPasswordStatus;
    XML_TYPE_UINT16 PowerState;
    XML_TYPE_UINT16 PowerSupplyState;
    XML_TYPE_STR PrimaryOwnerContact;
    XML_TYPE_STR PrimaryOwnerName;
    XML_TYPE_UINT16 ResetCapability;
    XML_TYPE_INT16 ResetCount;
    XML_TYPE_INT16 ResetLimit;
    XML_TYPE_DYN_ARRAY Roles;
    XML_TYPE_STR Status;
    XML_TYPE_DYN_ARRAY SupportContactDescription;
    XML_TYPE_UINT16 SystemStartupDelay;
    XML_TYPE_DYN_ARRAY SystemStartupOptions;
    XML_TYPE_UINT8 SystemStartupSetting;
    XML_TYPE_STR SystemType;
    XML_TYPE_UINT16 ThermalState;
    XML_TYPE_UINT64 TotalPhysicalMemory;
    XML_TYPE_STR UserName;
    XML_TYPE_UINT16 WakeUpType;
    XML_TYPE_STR Workgroup;
};

SER_DECLARE_TYPE(Win32_ComputerSystem_Data);

/* must match hypervObject */
struct _Win32_ComputerSystem {
    union {
        Win32_ComputerSystem_Data *common;
        Win32_ComputerSystem_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Win32_ComputerSystem *next;
};



/****************************************************
 * Win32_ComputerSystemProduct
 */

#define WIN32_COMPUTERSYSTEMPRODUCT_CLASSNAME \
    "Win32_ComputerSystemProduct"

#define WIN32_COMPUTERSYSTEMPRODUCT_WQL_SELECT \
    "SELECT * FROM Win32_ComputerSystemProduct "

extern hypervWmiClassInfoListPtr Win32_ComputerSystemProduct_WmiInfo;

#define WIN32_COMPUTERSYSTEMPRODUCT_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_ComputerSystemProduct"

struct _Win32_ComputerSystemProduct_Data {
    XML_TYPE_STR Caption;
    XML_TYPE_STR Description;
    XML_TYPE_STR IdentifyingNumber;
    XML_TYPE_STR Name;
    XML_TYPE_STR SKUNumber;
    XML_TYPE_STR UUID;
    XML_TYPE_STR Vendor;
    XML_TYPE_STR Version;
};

SER_DECLARE_TYPE(Win32_ComputerSystemProduct_Data);

/* must match hypervObject */
struct _Win32_ComputerSystemProduct {
    union {
        Win32_ComputerSystemProduct_Data *common;
        Win32_ComputerSystemProduct_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Win32_ComputerSystemProduct *next;
};



/****************************************************
 * Win32_OperatingSystem
 */

#define WIN32_OPERATINGSYSTEM_CLASSNAME \
    "Win32_OperatingSystem"

#define WIN32_OPERATINGSYSTEM_WQL_SELECT \
    "SELECT * FROM Win32_OperatingSystem "

extern hypervWmiClassInfoListPtr Win32_OperatingSystem_WmiInfo;

#define WIN32_OPERATINGSYSTEM_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_OperatingSystem"

struct _Win32_OperatingSystem_Data {
    XML_TYPE_STR BootDevice;
    XML_TYPE_STR BuildNumber;
    XML_TYPE_STR BuildType;
    XML_TYPE_STR Caption;
    XML_TYPE_STR CodeSet;
    XML_TYPE_STR CountryCode;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_STR CSCreationClassName;
    XML_TYPE_STR CSDVersion;
    XML_TYPE_STR CSName;
    XML_TYPE_UINT16 CurrentTimeZone;
    XML_TYPE_BOOL DataExecutionPrevention_Available;
    XML_TYPE_BOOL DataExecutionPrevention_32BitApplications;
    XML_TYPE_BOOL DataExecutionPrevention_Drivers;
    XML_TYPE_UINT8 DataExecutionPrevention_SupportPolicy;
    XML_TYPE_BOOL Debug;
    XML_TYPE_STR Description;
    XML_TYPE_BOOL Distributed;
    XML_TYPE_UINT32 EncryptionLevel;
    XML_TYPE_UINT8 ForegroundApplicationBoost;
    XML_TYPE_UINT64 FreePhysicalMemory;
    XML_TYPE_UINT64 FreeSpaceInPagingFiles;
    XML_TYPE_UINT64 FreeVirtualMemory;
    XML_TYPE_STR InstallDate;
    XML_TYPE_UINT32 LargeSystemCache;
    XML_TYPE_STR LastBootUpTime;
    XML_TYPE_STR LocalDateTime;
    XML_TYPE_STR Locale;
    XML_TYPE_STR Manufacturer;
    XML_TYPE_UINT32 MaxNumberOfProcesses;
    XML_TYPE_UINT64 MaxProcessMemorySize;
    XML_TYPE_DYN_ARRAY MUILanguages;
    XML_TYPE_STR Name;
    XML_TYPE_UINT32 NumberOfLicensedUsers;
    XML_TYPE_UINT32 NumberOfProcesses;
    XML_TYPE_UINT32 NumberOfUsers;
    XML_TYPE_UINT32 OperatingSystemSKU;
    XML_TYPE_STR Organization;
    XML_TYPE_STR OSArchitecture;
    XML_TYPE_UINT32 OSLanguage;
    XML_TYPE_UINT32 OSProductSuite;
    XML_TYPE_UINT16 OSType;
    XML_TYPE_STR OtherTypeDescription;
    XML_TYPE_BOOL PAEEnabled;
    XML_TYPE_STR PlusProductID;
    XML_TYPE_STR PlusVersionNumber;
    XML_TYPE_BOOL Primary;
    XML_TYPE_UINT32 ProductType;
    XML_TYPE_STR RegisteredUser;
    XML_TYPE_STR SerialNumber;
    XML_TYPE_UINT16 ServicePackMajorVersion;
    XML_TYPE_UINT16 ServicePackMinorVersion;
    XML_TYPE_UINT64 SizeStoredInPagingFiles;
    XML_TYPE_STR Status;
    XML_TYPE_UINT32 SuiteMask;
    XML_TYPE_STR SystemDevice;
    XML_TYPE_STR SystemDirectory;
    XML_TYPE_STR SystemDrive;
    XML_TYPE_UINT64 TotalSwapSpaceSize;
    XML_TYPE_UINT64 TotalVirtualMemorySize;
    XML_TYPE_UINT64 TotalVisibleMemorySize;
    XML_TYPE_STR Version;
    XML_TYPE_STR WindowsDirectory;
};

SER_DECLARE_TYPE(Win32_OperatingSystem_Data);

/* must match hypervObject */
struct _Win32_OperatingSystem {
    union {
        Win32_OperatingSystem_Data *common;
        Win32_OperatingSystem_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Win32_OperatingSystem *next;
};



/****************************************************
 * Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor
 */

#define WIN32_PERFRAWDATA_HVSTATS_HYPERVHYPERVISORVIRTUALPROCESSOR_CLASSNAME \
    "Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor"

#define WIN32_PERFRAWDATA_HVSTATS_HYPERVHYPERVISORVIRTUALPROCESSOR_WQL_SELECT \
    "SELECT * FROM Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor "

extern hypervWmiClassInfoListPtr Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor_WmiInfo;

#define WIN32_PERFRAWDATA_HVSTATS_HYPERVHYPERVISORVIRTUALPROCESSOR_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor"

struct _Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor_Data {
    XML_TYPE_UINT64 AddressDomainFlushesPersec;
    XML_TYPE_UINT64 AddressSpaceEvictionsPersec;
    XML_TYPE_UINT64 AddressSpaceFlushesPersec;
    XML_TYPE_UINT64 AddressSpaceSwitchesPersec;
    XML_TYPE_UINT64 APICEOIAccessesPersec;
    XML_TYPE_UINT64 APICIPIsSentPersec;
    XML_TYPE_UINT64 APICMMIOAccessesPersec;
    XML_TYPE_UINT64 APICSelfIPIsSentPersec;
    XML_TYPE_UINT64 APICTPRAccessesPersec;
    XML_TYPE_STR Caption;
    XML_TYPE_UINT64 ControlRegisterAccessesCost;
    XML_TYPE_UINT64 ControlRegisterAccessesCost_Base;
    XML_TYPE_UINT64 ControlRegisterAccessesPersec;
    XML_TYPE_UINT64 CPUIDInstructionsCost;
    XML_TYPE_UINT64 CPUIDInstructionsCost_Base;
    XML_TYPE_UINT64 CPUIDInstructionsPersec;
    XML_TYPE_UINT64 CPUWaitTimePerDispatch;
    XML_TYPE_UINT64 CPUWaitTimePerDispatch_Base;
    XML_TYPE_UINT64 DebugRegisterAccessesCost;
    XML_TYPE_UINT64 DebugRegisterAccessesCost_Base;
    XML_TYPE_UINT64 DebugRegisterAccessesPersec;
    XML_TYPE_STR Description;
    XML_TYPE_UINT64 EmulatedInstructionsCost;
    XML_TYPE_UINT64 EmulatedInstructionsCost_Base;
    XML_TYPE_UINT64 EmulatedInstructionsPersec;
    XML_TYPE_UINT64 ExternalInterruptsCost;
    XML_TYPE_UINT64 ExternalInterruptsCost_Base;
    XML_TYPE_UINT64 ExternalInterruptsPersec;
    XML_TYPE_UINT64 Frequency_Object;
    XML_TYPE_UINT64 Frequency_PerfTime;
    XML_TYPE_UINT64 Frequency_Sys100NS;
    XML_TYPE_UINT64 GlobalGVARangeFlushesPersec;
    XML_TYPE_UINT64 GPASpaceHypercallsPersec;
    XML_TYPE_UINT64 GuestPageTableMapsPersec;
    XML_TYPE_UINT64 HardwareInterruptsPersec;
    XML_TYPE_UINT64 HLTInstructionsCost;
    XML_TYPE_UINT64 HLTInstructionsCost_Base;
    XML_TYPE_UINT64 HLTInstructionsPersec;
    XML_TYPE_UINT64 HypercallsCost;
    XML_TYPE_UINT64 HypercallsCost_Base;
    XML_TYPE_UINT64 HypercallsPersec;
    XML_TYPE_UINT64 IOInstructionsCost;
    XML_TYPE_UINT64 IOInstructionsCost_Base;
    XML_TYPE_UINT64 IOInstructionsPersec;
    XML_TYPE_UINT64 IOInterceptMessagesPersec;
    XML_TYPE_UINT64 LargePageTLBFillsPersec;
    XML_TYPE_UINT64 LocalFlushedGVARangesPersec;
    XML_TYPE_UINT64 LogicalProcessorDispatchesPersec;
    XML_TYPE_UINT64 LogicalProcessorHypercallsPersec;
    XML_TYPE_UINT64 LogicalProcessorMigrationsPersec;
    XML_TYPE_UINT64 LongSpinWaitHypercallsPersec;
    XML_TYPE_UINT64 MemoryInterceptMessagesPersec;
    XML_TYPE_UINT64 MSRAccessesCost;
    XML_TYPE_UINT64 MSRAccessesCost_Base;
    XML_TYPE_UINT64 MSRAccessesPersec;
    XML_TYPE_UINT64 MWAITInstructionsCost;
    XML_TYPE_UINT64 MWAITInstructionsCost_Base;
    XML_TYPE_UINT64 MWAITInstructionsPersec;
    XML_TYPE_STR Name;
    XML_TYPE_UINT64 NestedPageFaultInterceptsCost;
    XML_TYPE_UINT64 NestedPageFaultInterceptsCost_Base;
    XML_TYPE_UINT64 NestedPageFaultInterceptsPersec;
    XML_TYPE_UINT64 OtherHypercallsPersec;
    XML_TYPE_UINT64 OtherInterceptsCost;
    XML_TYPE_UINT64 OtherInterceptsCost_Base;
    XML_TYPE_UINT64 OtherInterceptsPersec;
    XML_TYPE_UINT64 OtherMessagesPersec;
    XML_TYPE_UINT64 PageFaultInterceptsCost;
    XML_TYPE_UINT64 PageFaultInterceptsCost_Base;
    XML_TYPE_UINT64 PageFaultInterceptsPersec;
    XML_TYPE_UINT64 PageInvalidationsCost;
    XML_TYPE_UINT64 PageInvalidationsCost_Base;
    XML_TYPE_UINT64 PageInvalidationsPersec;
    XML_TYPE_UINT64 PageTableAllocationsPersec;
    XML_TYPE_UINT64 PageTableEvictionsPersec;
    XML_TYPE_UINT64 PageTableReclamationsPersec;
    XML_TYPE_UINT64 PageTableResetsPersec;
    XML_TYPE_UINT64 PageTableValidationsPersec;
    XML_TYPE_UINT64 PageTableWriteInterceptsPersec;
    XML_TYPE_UINT64 PendingInterruptsCost;
    XML_TYPE_UINT64 PendingInterruptsCost_Base;
    XML_TYPE_UINT64 PendingInterruptsPersec;
    XML_TYPE_UINT64 PercentGuestRunTime;
    XML_TYPE_UINT64 PercentGuestRunTime_Base;
    XML_TYPE_UINT64 PercentHypervisorRunTime;
    XML_TYPE_UINT64 PercentHypervisorRunTime_Base;
    XML_TYPE_UINT64 PercentRemoteRunTime;
    XML_TYPE_UINT64 PercentRemoteRunTime_Base;
    XML_TYPE_UINT64 PercentTotalRunTime;
    XML_TYPE_UINT64 PercentTotalRunTime_Base;
    XML_TYPE_UINT64 ReflectedGuestPageFaultsPersec;
    XML_TYPE_UINT64 SmallPageTLBFillsPersec;
    XML_TYPE_UINT64 SyntheticInterruptHypercallsPersec;
    XML_TYPE_UINT64 SyntheticInterruptsPersec;
    XML_TYPE_UINT64 Timestamp_Object;
    XML_TYPE_UINT64 Timestamp_PerfTime;
    XML_TYPE_UINT64 Timestamp_Sys100NS;
    XML_TYPE_UINT64 TotalInterceptsCost;
    XML_TYPE_UINT64 TotalInterceptsCost_Base;
    XML_TYPE_UINT64 TotalInterceptsPersec;
    XML_TYPE_UINT64 TotalMessagesPersec;
    XML_TYPE_UINT64 VirtualInterruptHypercallsPersec;
    XML_TYPE_UINT64 VirtualInterruptsPersec;
    XML_TYPE_UINT64 VirtualMMUHypercallsPersec;
    XML_TYPE_UINT64 VirtualProcessorHypercallsPersec;
};

SER_DECLARE_TYPE(Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor_Data);

/* must match hypervObject */
struct _Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor {
    union {
        Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor_Data *common;
        Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor *next;
};



/****************************************************
 * Win32_Processor
 */

#define WIN32_PROCESSOR_CLASSNAME \
    "Win32_Processor"

#define WIN32_PROCESSOR_WQL_SELECT \
    "SELECT * FROM Win32_Processor "

extern hypervWmiClassInfoListPtr Win32_Processor_WmiInfo;

#define WIN32_PROCESSOR_RESOURCE_URI \
    "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor"

struct _Win32_Processor_Data {
    XML_TYPE_UINT16 AddressWidth;
    XML_TYPE_UINT16 Architecture;
    XML_TYPE_UINT16 Availability;
    XML_TYPE_STR Caption;
    XML_TYPE_UINT32 ConfigManagerErrorCode;
    XML_TYPE_BOOL ConfigManagerUserConfig;
    XML_TYPE_UINT16 CpuStatus;
    XML_TYPE_STR CreationClassName;
    XML_TYPE_UINT32 CurrentClockSpeed;
    XML_TYPE_UINT16 CurrentVoltage;
    XML_TYPE_UINT16 DataWidth;
    XML_TYPE_STR Description;
    XML_TYPE_STR DeviceID;
    XML_TYPE_BOOL ErrorCleared;
    XML_TYPE_STR ErrorDescription;
    XML_TYPE_UINT32 ExtClock;
    XML_TYPE_UINT16 Family;
    XML_TYPE_STR InstallDate;
    XML_TYPE_UINT32 L2CacheSize;
    XML_TYPE_UINT32 L2CacheSpeed;
    XML_TYPE_UINT32 L3CacheSize;
    XML_TYPE_UINT32 L3CacheSpeed;
    XML_TYPE_UINT32 LastErrorCode;
    XML_TYPE_UINT16 Level;
    XML_TYPE_UINT16 LoadPercentage;
    XML_TYPE_STR Manufacturer;
    XML_TYPE_UINT32 MaxClockSpeed;
    XML_TYPE_STR Name;
    XML_TYPE_UINT32 NumberOfCores;
    XML_TYPE_UINT32 NumberOfLogicalProcessors;
    XML_TYPE_STR OtherFamilyDescription;
    XML_TYPE_STR PNPDeviceID;
    XML_TYPE_DYN_ARRAY PowerManagementCapabilities;
    XML_TYPE_BOOL PowerManagementSupported;
    XML_TYPE_STR ProcessorId;
    XML_TYPE_UINT16 ProcessorType;
    XML_TYPE_UINT16 Revision;
    XML_TYPE_STR Role;
    XML_TYPE_STR SocketDesignation;
    XML_TYPE_STR Status;
    XML_TYPE_UINT16 StatusInfo;
    XML_TYPE_STR Stepping;
    XML_TYPE_STR SystemCreationClassName;
    XML_TYPE_STR SystemName;
    XML_TYPE_STR UniqueId;
    XML_TYPE_UINT16 UpgradeMethod;
    XML_TYPE_STR Version;
    XML_TYPE_UINT32 VoltageCaps;
};

SER_DECLARE_TYPE(Win32_Processor_Data);

/* must match hypervObject */
struct _Win32_Processor {
    union {
        Win32_Processor_Data *common;
        Win32_Processor_Data *None;
    } data;
    hypervWmiClassInfoPtr info;
    Win32_Processor *next;
};



