qemu-e2k/qga
Tomoki Sekiyama b39297aedf qemu-ga: Add Windows VSS provider and requester as DLL
Adds VSS provider and requester as a qga-vss.dll, which is loaded by
Windows VSS service as well as by qemu-ga.

"provider.cpp" implements a basic stub of a software VSS provider.
Currently, this module only relays a frozen event from VSS service to the
agent, and thaw event from the agent to VSS service, to block VSS process
to keep the system frozen while snapshots are taken at the host.

To register the provider to the guest system as COM+ application, the type
library (.tlb) for qga-vss.dll is required. To build it from COM IDL (.idl),
VisualC++, MIDL and stdole2.tlb in Windows SDK are required. This patch also
adds pre-compiled .tlb file in the repository in order to enable
cross-compile qemu-ga.exe for Windows with VSS support.

"requester.cpp" provides the VSS requester to kick the VSS snapshot process.
Qemu-ga.exe works without the DLL, although fsfreeze features are disabled.

These functions are only supported in Windows 2003 or later. In older
systems, fsfreeze features are disabled.

In several versions of Windows which don't support attribute
VSS_VOLSNAP_ATTR_NO_AUTORECOVERY, DoSnapshotSet fails with error
VSS_E_OBJECT_NOT_FOUND. In this patch, we just ignore this error.
To solve this fundamentally, we need a framework to handle mount writable
snapshot on guests, which is required by VSS auto-recovery feature
(cleanup phase after a snapshot is taken).

Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2013-09-09 14:17:57 -05:00
..
vss-win32 qemu-ga: Add Windows VSS provider and requester as DLL 2013-09-09 14:17:57 -05:00
channel-posix.c qemu-ga: Handle errors uniformely in ga_channel_open() 2013-01-14 12:08:05 -06:00
channel-win32.c remove double semicolons 2013-05-12 13:25:55 +04:00
channel.h qemu-ga: move channel/transport functionality into wrapper class 2012-02-23 15:40:16 -06:00
commands-posix.c qga: unlink just created guest-file if fchmod() or fdopen() fails on it 2013-05-13 09:45:49 -05:00
commands-win32.c qga: add windows implementation for guest-set-time 2013-04-02 09:06:11 -05:00
commands.c qemu-ga: Fix unchecked strdup() by converting to g_strdup() 2013-01-30 11:14:46 +01:00
guest-agent-command-state.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
guest-agent-core.h qemu-ga: use key-value store to avoid recycling fd handles after restart 2013-03-11 18:53:47 -05:00
main.c qga: save state directory in ga_install_service() 2013-05-30 11:37:37 -05:00
Makefile.objs qemu-ga: Add Windows VSS provider and requester as DLL 2013-09-09 14:17:57 -05:00
qapi-schema.json qga schema: document generic QERR_UNSUPPORTED 2013-04-02 09:06:11 -05:00
service-win32.c qga: escape cmdline args when registering win32 service (CVE-2013-2231) 2013-07-25 14:49:04 -05:00
service-win32.h qga: save state directory in ga_install_service() 2013-05-30 11:37:37 -05:00