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_ComputerSystem的 Name 属性。
-
-
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
-
元素的当前状态。 此属性继承自 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 |
|
DLL |
|