C++ ConvertToReferencePoint方法不工作,作业参数为NULL(HyperV 2016)
我尝试先创建快照,然后将快照转换为参考点。快照创建成功,我可以在HyperV manager中看到它。但当我尝试使用快照引用调用ConvertToReferencePoint方法时,作业输出将为NULL 创建快照后,我将获取与其关联的设置数据,并对其进行编辑以重命名创建的快照。我从中提取InstanceID字段并生成发送到ConvertToReferencePoint方法的作业路径。C++ ConvertToReferencePoint方法不工作,作业参数为NULL(HyperV 2016),c++,com,wmi,hyper-v,C++,Com,Wmi,Hyper V,我尝试先创建快照,然后将快照转换为参考点。快照创建成功,我可以在HyperV manager中看到它。但当我尝试使用快照引用调用ConvertToReferencePoint方法时,作业输出将为NULL 创建快照后,我将获取与其关联的设置数据,并对其进行编辑以重命名创建的快照。我从中提取InstanceID字段并生成发送到ConvertToReferencePoint方法的作业路径。 CComVariant((L“Msvm\u VirtualSystemSettingData.CreationC
CComVariant((L“Msvm\u VirtualSystemSettingData.CreationClassName=\“Msvm\u VirtualSystemSettingData\”,InstanceID=\“”+snapRef+L“\”).c\u str())代码>
此外,DeleteSnapshot和DeleteSnapshotTree方法工作正常,即使它们将Msvm_VirtualSystemSettingData path作为参数。我错过了什么吗
相似的话题但不同的问题
:
我甚至尝试使用WMI浏览器工具对以下参数进行硬编码
AffectedSnapshot=\\hostname\ROOT\virtualization\v2:Msvm_VirtualSystemSettingData.InstanceID="Microsoft:5A58EE16-48E8-46E2-8162-065826537142"
ReferencePointSettings=""
ConvertToReferencePoint:空响应
Wbem::Parameters inParams;
//inParams.add(L"AffectedSnapshot", CComVariant((L"Msvm_VirtualSystemSettingData.CreationClassName=\"Msvm_VirtualSystemSettingData\",InstanceID=\"" + snapRef + L"\"").c_str()));
inParams.add(L"AffectedSnapshot", CComVariant(L"\\\\IWF1117030\\ROOT\\virtualization\\v2:Msvm_VirtualSystemSettingData.InstanceID=\"Microsoft:5A58EE16-48E8-46E2-8162-065826537142\""));
inParams.add(L"ReferencePointSettings", CComVariant(L""));
Wbem::ParametersPtr outParams(new Wbem::Parameters);
outParams->add(L"Job", CComVariant());
m_wbemServices->execObjectMethod(L"Msvm_VirtualSystemSnapshotService", L"Name=\"" + instanceName + L"\"", L"ConvertToReferencePoint", inParams, outParams);
DeleteSnapshot:很好用
std::wstring instanceName = getSingleInstanceNameForWMIClass(L"Msvm_VirtualSystemSnapshotService");
Wbem::Parameters inParams;
inParams.add(L"AffectedSnapshot", CComVariant((L"Msvm_VirtualSystemSettingData.CreationClassName=\"Msvm_VirtualSystemSettingData\",InstanceID=\"" + snapRef + L"\"").c_str()));
Wbem::ParametersPtr outParams(new Wbem::Parameters);
outParams->add(L"Job", CComVariant());
m_wbemServices->execObjectMethod(L"Msvm_VirtualSystemSnapshotService", L"Name=\"" + instanceName + L"\"", L"DestroySnapshot", inParams, outParams);
没有错误消息。只是得到空值。
如果有人有实现此目的的示例代码,请共享。检查您是如何在WMI资源管理器中创建快照的。它应该是“Recovery”类型,ConvertToReferencePoint才能工作。检查您是如何在WMI资源管理器中创建快照的。它应该是“Recovery”类型,ConvertToReferencePoint才能工作。如果无法在WMI资源管理器中运行它,那么它也永远不会在代码中工作。文档指出Win10是必需的。我无法在WMI资源管理器中执行它,因为如果其中一个参数为REF类型,它不支持方法执行。我甚至有一个C代码,它需要做的工作,但是我需要一个在C++中做同样的方法。如果你不能在WMI浏览器中运行它,那么它也永远不会在代码中工作。文档指出Win10是必需的。我无法在WMI资源管理器中执行它,因为如果其中一个参数为REF类型,它不支持方法执行。我甚至有一个C代码,它做了所需的工作,但是我需要一种在C++中做同样的方法。