How FSproxy works
Well to be honest it's quite a hack. :) And not an elegant one, but it works. The whole thing consists of two main parts: FSproxy Agent and Server. The first one, agent, is a small application written entirely in C using Win32 API. It's main function is to present the user a nice GUI with simple configuration dialog and monitor/control the server process. It feeds the server data about what hard drives to use, virtual network interface configuration (about which later) and so on. It can also send various control commands to the server and start/stop it's process.
The server is a background QEMU process which runs a minimal GNU/Linux system. Emulated hardware consists of an i386 CPU with 16MB of RAM, no graphics card and an Intel PRO/1000 network adapter. Operating system is contained within 18MB disk image mounted read-only. When the server (QEMU process) is started by FSproxy Agent, the operating system running in a virtual machine detects types of partitions on physical hard drives attached to QEMU, loads appropriate kernel modules an mounts them. Then it starts a Samba server with each mount point being exported as a share. Minimal HTTP server is also started to handle control commands sent by agent and to report status. QEMU process uses a virtual TAP network adapter to provide connectivity with Windows. At this point one can access server's samba shares at
\\fsproxy and map them as network drives. When the server is stopped or restarted by FSproxy Agent all partitions are unmounted/remounted read-only and QEMU process terminates.