FSproxy (2009)

Windows, C, WinAPI, QEMU

A small Windows application that runs in the background and provides access to files on various Linux/UNIX filesystems.

It consists of two parts: the server process and the agent application.

The server process is the QEMU emulator running with administrative privileges, with physical block devices attached as virtual HDDs. A minimal Linux system boots up in the emulator, enumerates and mounts all known filesystems on those HDDs and then publishes each partition via the Samba protocol on a virtual TUN/TAP interface. Data then can be accessed from within Windows at \\fsproxy UNC path using Windows Explorer. A minimal HTTP server running CGI control application is also started for the purpose of communicating with FSproxy agent.

The agent application acts as a GUI for the server process. It presents the user with a setup dialog allowing selection of which physical hard drives are visible to FSproxy and configuration of the virtual network interface. Additional tray icon shows current server status and allows for starting/stopping the server process.

FSproxy has limited performance due to considerably significant emulation overhead while performing I/O operations. It can however sustain transfers of about 10 MB/s on a moderately fast computer and has low memory footprint.