mirror of https://github.com/xemu-project/xemu.git
qga-win: Handle VSS_E_PROVIDER_ALREADY_REGISTERED error
This patch handles the case where VSS Provider is already registered, where in such case qga uninstalls the provider and registers it again. Signed-off-by: Sameeh Jubran <sjubran@redhat.com> Signed-off-by: Basil Salman <basil@daynix.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
This commit is contained in:
parent
bb1ce44b15
commit
b2413df833
|
@ -443,6 +443,17 @@ STDAPI DllRegisterServer(void)
|
||||||
VSS_PROV_SOFTWARE,
|
VSS_PROV_SOFTWARE,
|
||||||
const_cast<WCHAR*>(QGA_PROVIDER_VERSION),
|
const_cast<WCHAR*>(QGA_PROVIDER_VERSION),
|
||||||
g_gProviderVersion);
|
g_gProviderVersion);
|
||||||
|
if (hr == (long int) VSS_E_PROVIDER_ALREADY_REGISTERED) {
|
||||||
|
DllUnregisterServer();
|
||||||
|
hr = pVssAdmin->RegisterProvider(g_gProviderId, CLSID_QGAVSSProvider,
|
||||||
|
const_cast<WCHAR * >
|
||||||
|
(QGA_PROVIDER_LNAME),
|
||||||
|
VSS_PROV_SOFTWARE,
|
||||||
|
const_cast<WCHAR * >
|
||||||
|
(QGA_PROVIDER_VERSION),
|
||||||
|
g_gProviderVersion);
|
||||||
|
}
|
||||||
|
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
errmsg_dialog(hr, "RegisterProvider failed");
|
errmsg_dialog(hr, "RegisterProvider failed");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue