Msvm_HeartbeatComponent 类

表示检测信号服务的状态,该服务负责定期报告检测信号来监视虚拟机的状态。

以下语法是简化托管对象格式 (MOF) 代码,它包括所有继承的属性。

语法

[Dynamic, Provider("VmmsWmiInstanceAndMethodProvider"), AMENDMENT]
class Msvm_HeartbeatComponent : CIM_LogicalDevice
{
  string   InstanceID;
  string   Caption = "Heartbeat";
  string   Description = "Microsoft Heartbeat Service";
  string   ElementName = "Heartbeat";
  datetime InstallDate;
  string   Name;
  uint16   OperationalStatus[];
  string   StatusDescriptions[];
  string   Status;
  uint16   HealthState = 5;
  uint16   CommunicationStatus;
  uint16   DetailedStatus;
  uint16   OperatingStatus;
  uint16   PrimaryStatus;
  uint16   EnabledState = 2;
  string   OtherEnabledState;
  uint16   RequestedState = 12;
  uint16   EnabledDefault = 7;
  datetime TimeOfLastStateChange;
  uint16   AvailableRequestedStates[];
  uint16   TransitioningToState;
  string   SystemCreationClassName = "Msvm_ComputerSystem";
  string   SystemName;
  string   CreationClassName = "Msvm_HeartbeatComponent";
  string   DeviceID = "Microsoft:VMGUID\GUID";
  boolean  PowerManagementSupported;
  uint16   PowerManagementCapabilities[];
  uint16   Availability;
  uint16   StatusInfo;
  uint32   LastErrorCode;
  string   ErrorDescription;
  boolean  ErrorCleared;
  string   OtherIdentifyingInfo[];
  uint64   PowerOnHours;
  uint64   TotalPowerOnHours;
  string   IdentifyingDescriptions[];
  uint16   AdditionalAvailability[] = 6;
  uint64   MaxQuiesceTime;
};

成员

Msvm_HeartbeatComponent类包含以下类型的成员:

方法

Msvm_HeartbeatComponent类具有这些方法。

方法 说明
EnableDevice 不支持此方法。
OnlineDevice 不支持此方法。
QuiesceDevice 不支持此方法。
RequestStateChange 请求状态更改。
重置 重置虚拟设备。
RestoreProperties 不支持此方法。
SaveProperties 不支持此方法。
SetPowerState 不支持此方法。

属性

Msvm_HeartbeatComponent类具有这些属性。

AdditionalAvailability

数据类型: uint16 数组

访问类型:只读

设备的任何其他可用性和状态。 此属性继承自 CIM_LogicalDevice,并且始终设置为 6 (不适用) 。

可用性

数据类型: uint16

访问类型:只读

设备的主要可用性和状态。 此属性继承自 CIM_LogicalDevice,但不使用它。

AvailableRequestedStates

数据类型: uint16 数组

访问类型:只读

指示用于启动状态更改的 RequestStateChange 方法的 RequestedState 参数的可能值。 列出的值将是CIM_EnabledLogicalElementCapabilities关联实例的 RequestedStatesSupported 属性中包含的值的子集,其中选择的值是CIM_EnabledLogicalElement当前状态的函数。 如果实现能够将可能的值集播播为当前状态的函数,则此属性可以是非 Null 。 如果实现无法确定可能的值集作为当前状态的函数,则该属性将为 Null

此属性继承自 CIM_EnabledLogicalElement

已启用 (2)

禁用 (3)

关闭 (4)

脱机 (6)

测试 (7)

延迟 (8)

静止 (9)

重启 (10)

重置 (11)

DMTF 保留 (。。)

Caption

数据类型: 字符串

访问类型:只读

对象的简短说明。 此属性继承自 CIM_ManagedElement 类,并且始终设置为“检测信号”。

CommunicationStatus

数据类型: uint16

访问类型:只读

指示检测能够与基础托管元素通信。 Null 值指示此属性未实现。 此属性继承自 CIM_ManagedSystemElement

CreationClassName

数据类型: 字符串

访问类型:只读

范围系统的创建类名称。 此属性继承自 CIM_LogicalDevice,并且始终设置为“Msvm_HeartbeatComponent”。

说明

数据类型: 字符串

访问类型:只读

对象的说明。 此属性继承自 CIM_ManagedElement,并且始终设置为“Microsoft 检测信号服务”。

DetailedStatus

数据类型: uint16

访问类型:只读

使用其他状态详细信息补充 PrimaryStatus 属性。 Null 值指示此属性未实现。 此属性继承自 CIM_ManagedSystemElement

DeviceID

数据类型: 字符串

访问类型:只读

用于唯一命名逻辑设备的地址或其他标识信息。 此属性继承自 CIM_LogicalDevice,并且始终设置为“Microsoft:VMGUIDGUID\”,其中 VMGUID 是与此设备关联的Msvm_ComputerSystem的名称属性。

ElementName

数据类型: 字符串

访问类型:只读

对象的显示名称。 此属性继承自 CIM_ManagedElement,并且始终设置为“检测信号”。

EnabledDefault

数据类型: uint16

访问类型:只读

此属性继承自 CIM_EnabledLogicalElement,并且始终设置为 7 (“无默认) ”。

EnabledState

数据类型: uint16

访问类型:只读

元素的启用和禁用状态。 此属性继承自 CIM_EnabledLogicalElement ,并将是以下值之一。

含义
Enabled
2
元素正在运行。
已禁用
3
元素已关闭。

ErrorCleared

数据类型: 布尔值

访问类型:只读

指示是否已清除 LastErrorCode 中报告的错误。 此属性继承自 CIM_LogicalDevice ,但未使用。

ErrorDescription

数据类型: 字符串

访问类型:只读

一个字符串,提供有关 LastErrorCode 中记录的错误的详细信息以及可以采取的任何纠正措施的信息。 此属性继承自 CIM_LogicalDevice ,但未使用。

HealthState

数据类型: uint16

访问类型:只读

元素的当前运行状况。 此属性继承自 CIM_ManagedSystemElement,并且始终设置为 5 (OK) 。

IdentifyingDescriptions

数据类型: 字符串 数组

访问类型:只读

一个自由格式字符串数组,提供 OtherIdentifyingInfo 属性数组中条目背后的说明和详细信息。 此属性继承自 CIM_LogicalDevice,但不使用它。

InstallDate

数据类型: datetime

访问类型:只读

集成服务的安装日期和时间。 此属性继承自 CIM_ManagedSystemElement

InstanceID

数据类型: 字符串

访问类型:只读

限定符: 密钥

唯一标识此类的实例。 此属性继承自 CIM_ManagedElement

LastErrorCode

数据类型: uint32

访问类型:只读

逻辑设备报告的最后一个错误代码。 此属性继承自 CIM_LogicalDevice,但不使用它。

MaxQuiesceTime

数据类型: uint64

访问类型:只读

此属性已弃用。 此属性继承自 CIM_LogicalDevice,但不使用它。

名称

数据类型: 字符串

访问类型:只读

对象的已知标签。 此属性继承自 CIM_ManagedSystemElement

OperatingStatus

数据类型: uint16

访问类型:只读

提供元素操作条件的当前状态信息,并可用于提供有关 EnabledState 属性值的更多详细信息。 Null 值指示此属性未实现。 此属性继承自 CIM_ManagedSystemElement

OperationalStatus

数据类型: uint16 数组

访问类型:只读

限定符: 重写 (“OperationalStatus”) , ArrayType (“Indexed”)

元素的当前状态。 此属性继承自 CIM_ManagedSystemElement

下面是 OperationalStatus[0] 属性值的可能值。

正常 (2)

该服务正常运行。 OperationalStatus[1] 和 StatusDescriptions[1] 属性值可能包含详细信息。

降级 (3)

该服务正常运行,但来宾服务协商了兼容的通信协议版本。 OperationalStatus[1] 和 StatusDescriptions[1] 属性值可能包含详细信息。

不可恢复的错误 (7)

来宾不支持兼容的协议版本。 OperationalStatus[1] 和 StatusDescriptions[1] 属性值可能包含详细信息。

无联系人 (12)

来宾服务尚未安装或尚未联系。

丢失通信 (13)

来宾服务不再正常响应。

已暂停 (15)

虚拟机已暂停。

OperationalStatus[1] 属性值指示合并的应用程序状态值。 这是以下值之一。

注意

应用程序的状态通过使用 SetApplicationState 方法在虚拟机上设置。

正常 (2)

虚拟机内运行的应用程序正常运行。

协议不匹配 (32775)

来宾和主机组件运行不同的协议版本。

应用程序关键状态 (32782)

虚拟机内的一个或多个应用程序处于关键状态。

通信超时 (32783)

等待来宾组件的响应超时。

通信失败 (32784)

无法与来宾组件通信。

OtherEnabledState

数据类型: 字符串

访问类型:只读

EnabledState 属性设置为 1 (其他) 时,描述元素的启用或禁用状态的字符串。 当 EnabledState 属性不是 1 的任何值时,此属性必须设置为 Null。 此属性继承自 CIM_EnabledLogicalElement,并且始终设置为 Null

OtherIdentifyingInfo

数据类型: 字符串 数组

访问类型:只读

除了设备 ID 信息之外,任何其他数据都可用于标识逻辑设备。 此属性继承自 CIM_LogicalDevice ,并且始终设置为 Null

PowerManagementCapabilities

数据类型: uint16 数组

访问类型:只读

设备的电源管理功能。 此属性继承自 CIM_LogicalDevice,但未使用。

PowerManagementSupported

数据类型: 布尔值

访问类型:只读

指示设备是否可以进行电源管理。 此属性继承自 CIM_LogicalDevice,但未使用。

PowerOnHours

数据类型: uint64

访问类型:只读

自上次电源周期以来,此设备已打开的连续小时数。 此属性继承自 CIM_LogicalDevice ,但未使用。

PrimaryStatus

数据类型: uint16

访问类型:只读

提供高级状态信息。 此属性应与 DetailedStatus 属性结合使用,以提供元素及其子组件的高级和详细的运行状况信息。 Null 值指示此属性未实现。 此属性继承自 CIM_ManagedSystemElement

RequestedState

数据类型: uint16

访问类型:只读

元素的最后一个请求或所需状态。 此属性继承自 CIM_EnabledLogicalElement,并且始终设置为 12 (不适用) 。

Status

数据类型: 字符串

访问类型:只读

对象的当前状态。 此属性继承自 CIM_ManagedSystemElement, 但未使用。

StatusDescriptions

数据类型: 字符串 数组

访问类型:只读

描述各种 OperationalStatus 数组值的字符串。 此属性继承自 CIM_ManagedSystemElement

StatusInfo

数据类型: uint16

访问类型:只读

逻辑设备的当前状态。 此属性继承自 CIM_LogicalDevice,但未使用。

SystemCreationClassName

数据类型: 字符串

访问类型:只读

范围系统的创建类名称。 此属性继承自 CIM_LogicalDevice,并且始终设置为“Msvm_ComputerSystem”。

SystemName

数据类型: 字符串

访问类型:只读

范围系统的名称。 此属性继承自 CIM_LogicalDevice ,是与此检测信号服务关联的 Msvm_ComputerSystem 的名称。

TimeOfLastStateChange

数据类型: datetime

访问类型:只读

上次更改元素的启用状态的日期或时间。 此属性继承自 CIM_EnabledLogicalElement,并且始终设置为 Null

TotalPowerOnHours

数据类型: uint64

访问类型:只读

此设备已供电的总小时数。 此属性继承自 CIM_LogicalDevice,但未使用。

TransitioningToState

数据类型: uint16

访问类型:只读

指示实例正在转换的目标状态。 此属性继承自 CIM_EnabledLogicalElement,但不使用该属性。

注解

Msvm_HeartbeatComponent 类的访问可能会受到 UAC 筛选的限制。 有关详细信息,请参阅 用户帐户控制和 WMI

示例

以下 C# 示例获取虚拟机的应用程序运行状况状态。 有关 虚拟化示例的常用实用工具,可以在 V2) (常见实用工具 中找到。

重要

若要正常运行,必须使用管理员权限运行以下代码。

private UInt16 OperationalStatusOk = 2;
private UInt16 OperationalStatusApplicationCriticalState = 32782;

/// <summary>
/// Gets the applications status in the VM.
/// </summary>
/// <param name="hostMachine">The hostname of the machine on which
/// the VM is running.</param>
/// <param name="vmName">The VM name.</param>
public
void
GetAppHealthStatus(
    string hostMachine,
    string vmName
    )
{
    ManagementScope scope = new ManagementScope(
        @"\\" + hostMachine + @"\root\virtualization\v2", null);

    ManagementObject heartBeatComponent = null;

    // Get the VM object and its heart beat component.
    using (ManagementObject vm = WmiUtilities.GetVirtualMachine(vmName, scope))
    using (ManagementObjectCollection heartBeatCollection =
        vm.GetRelated("Msvm_HeartbeatComponent", "Msvm_SystemDevice",
            null, null, null, null, false, null))
    {
        foreach (ManagementObject element in heartBeatCollection)
        {
            heartBeatComponent = element;
            break;
        }
    }

    if (heartBeatComponent == null)
    {
        Console.WriteLine("The VM is not running.");
        return;
    }

    using (heartBeatComponent)
    {
        UInt16[] operationalStatus = (UInt16[])heartBeatComponent["OperationalStatus"];
        UInt16 vmStatus = operationalStatus[0];

        if (vmStatus != OperationalStatusOk)
        {
            Console.WriteLine("The VM heartbeat status is not OK");
            return;
        }

        if (operationalStatus.Length != 2)
        {
            Console.WriteLine("The required Integration Components are not running " +
                "or not installed.");
            return;
        }

        UInt16 appStatus = operationalStatus[1];
        if (appStatus == OperationalStatusOk)
        {
            Console.WriteLine("The VM applications health status: OK");
        }
        else if (appStatus == OperationalStatusApplicationCriticalState)
        {
            Console.WriteLine("The VM applications health status: Critical");
        }
        else
        {
            throw new ManagementException("Unknown application health status");
        }
    }
}

要求

要求
最低受支持的客户端
Windows 8 [仅限桌面应用]
最低受支持的服务器
Windows Server 2012 [仅限桌面应用]
命名空间
Root\Virtualization\V2
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

另请参阅

CIM_LogicalDevice

CIM_LogicalDevice

Msvm_HeartbeatComponent