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:VMGUID\GUID”,其中 VMGUID 是与此设备关联的Msvm_ComputerSystemName 属性。

ElementName

数据类型: 字符串

访问类型:只读

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

EnabledDefault

数据类型: uint16

访问类型:只读

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

EnabledState

数据类型: uint16

访问类型:只读

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

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

ErrorCleared

数据类型: 布尔值

访问类型:只读

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

ErrorDescription

数据类型: 字符串

访问类型:只读

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

HealthState

数据类型: uint16

访问类型:只读

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

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,但不使用它。

备注

UAC 筛选可能会限制对 Msvm_HeartbeatComponent 类的访问。 有关详细信息,请参阅 用户帐户控制和 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