Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ConvertToReferencePoint方法不工作,作业参数为NULL(HyperV 2016)_C++_Com_Wmi_Hyper V - Fatal编程技术网

C++ ConvertToReferencePoint方法不工作,作业参数为NULL(HyperV 2016)

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

我尝试先创建快照,然后将快照转换为参考点。快照创建成功,我可以在HyperV manager中看到它。但当我尝试使用快照引用调用ConvertToReferencePoint方法时,作业输出将为NULL

创建快照后,我将获取与其关联的设置数据,并对其进行编辑以重命名创建的快照。我从中提取InstanceID字段并生成发送到ConvertToReferencePoint方法的作业路径。
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++中做同样的方法。