These patches apply on top of qemu.git master, and can also be obtained from: git://github.com/mdroth/qemu.git qga-win32-v3
CHANGES SINCE V2: - Fixed long-standing bug in getopt usage that triggered on win32 (Matsuda) - Treat ERROR_OPERATION_ABORTED on read from unconnected/empty channel as eof (Matsuda) CHANGES SINCE V1: - Dropped guest-set-support-level patch dependency - Rebased on master and re-tested - Spelling/grammar fixes in commits/comments OVERVIEW: These patches add support for Windows to the QEMU guest agent. With these patches the following guest agent commands are supported on Windows: guest-ping guest-info guest-sync guest-shutdown The guest-file* commands can essentially be enabled for Windows as-is, but since mingw does not honor the O_NONBLOCK flag, they'll need to be reworked if we're to retain the current non-blocking behavior. The rest of the commands are currently stubbed out for Windows (qemu-ga will return an "unsupported" error), but it should be easy to implement these going forward with basic Windows support/infrastructure in place. The build was tested using Fedora15 with a MinGW cross-build target via: configure --enable-guest-agent --cross-prefix=i686-pc-mingw32- make qemu-ga.exe The executable was tested using Windows XP SP3, and partially tested using Windows Server 2008 and Windows 7 (no I/O for the latter 2, having issues with virtio-win drivers). GLib 2.28+ for Windows is required. You can install qemu-ga as a load-on-boot service by running: ./qemu-ga --service install And start/stop manually via: net start qemu-ga net stop qemu-ga Many thanks to Gal Hammer for contributing the service integration and shutdown code. Makefile | 2 +- Makefile.objs | 8 +- configure | 2 +- qapi-schema-guest.json | 118 ++++++++-- qemu-ga.c | 423 ++++++++++++++------------------ qga/channel-posix.c | 246 +++++++++++++++++++ qga/channel-win32.c | 340 +++++++++++++++++++++++++ qga/channel.h | 33 +++ qga/commands-posix.c | 528 +++++++++++++++++++++++++++++++++++++++ qga/commands-win32.c | 130 ++++++++++ qga/commands.c | 73 ++++++ qga/guest-agent-commands.c | 585 -------------------------------------------- qga/guest-agent-core.h | 3 +- qga/service-win32.c | 114 +++++++++ qga/service-win32.h | 30 +++ 15 files changed, 1790 insertions(+), 845 deletions(-)