summary refs log tree commit diff stats
path: root/qga/vss-win32/provider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qga/vss-win32/provider.cpp')
-rw-r--r--qga/vss-win32/provider.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/qga/vss-win32/provider.cpp b/qga/vss-win32/provider.cpp
index c3030d8e55..b2336465ac 100644
--- a/qga/vss-win32/provider.cpp
+++ b/qga/vss-win32/provider.cpp
@@ -291,8 +291,17 @@ STDMETHODIMP CQGAVssProvider::BeginPrepareSnapshot(
 STDMETHODIMP CQGAVssProvider::IsVolumeSupported(
     VSS_PWSZ pwszVolumeName, BOOL *pbSupportedByThisProvider)
 {
-    *pbSupportedByThisProvider = TRUE;
+    HANDLE hEventFrozen;
+
+    /* Check if a requester is qemu-ga by whether an event is created */
+    hEventFrozen = OpenEvent(EVENT_ALL_ACCESS, FALSE, EVENT_NAME_FROZEN);
+    if (!hEventFrozen) {
+        *pbSupportedByThisProvider = FALSE;
+        return S_OK;
+    }
+    CloseHandle(hEventFrozen);
 
+    *pbSupportedByThisProvider = TRUE;
     return S_OK;
 }