[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL for-5.0 2/5] qga-win: Handle VSS_E_PROVIDER_ALREADY_REGISTERED err
From: |
Michael Roth |
Subject: |
[PULL for-5.0 2/5] qga-win: Handle VSS_E_PROVIDER_ALREADY_REGISTERED error |
Date: |
Tue, 24 Mar 2020 11:46:50 -0500 |
From: Sameeh Jubran <address@hidden>
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 <address@hidden>
Signed-off-by: Basil Salman <address@hidden>
Signed-off-by: Michael Roth <address@hidden>
---
qga/vss-win32/install.cpp | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp
index 6713e58670..a456841360 100644
--- a/qga/vss-win32/install.cpp
+++ b/qga/vss-win32/install.cpp
@@ -443,6 +443,17 @@ STDAPI DllRegisterServer(void)
VSS_PROV_SOFTWARE,
const_cast<WCHAR*>(QGA_PROVIDER_VERSION),
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)) {
errmsg_dialog(hr, "RegisterProvider failed");
}
--
2.17.1
- [PULL for-5.0 0/5] qemu-ga patch queue for hard-freeze, Michael Roth, 2020/03/24
- [PULL for-5.0 2/5] qga-win: Handle VSS_E_PROVIDER_ALREADY_REGISTERED error,
Michael Roth <=
- [PULL for-5.0 3/5] qga-win: prevent crash when executing guest-file-read with large count, Michael Roth, 2020/03/24
- [PULL for-5.0 4/5] qga: Fix undefined C behavior, Michael Roth, 2020/03/24
- [PULL for-5.0 5/5] qemu-ga: document vsock-listen in the man page, Michael Roth, 2020/03/24
- [PULL for-5.0 1/5] qga: Installer: Wait for installation to finish, Michael Roth, 2020/03/24
- Re: [PULL for-5.0 0/5] qemu-ga patch queue for hard-freeze, Peter Maydell, 2020/03/24