I think it is rather by Johannes Schindelin [1].
[1] https://github.com/qemu/qemu/commit/de167e416fa3d6e4bbdcac90...
I think the hard part is that if the "disk" is mounted, the FAT would be in memory on Windows, so it's very hard to put in a file from "outside", because Windows will probably never re-read the FAT from the disk and will never see that file.
The idea I'm proposing is to turn VVFAT or an equivalent idea into a kernel module that treats the data directory --- or indeed any --- directory on the Android, including the system one, as the "host" since it has a filesystem-application interface on one side that just uses the normal filesystem calls, and expose the virtual FAT filesystem over USB mass storage on the other side.
If a phone is "mounted" as FAT32, the writes from Windows should be intercepted by the driver and it would create Linux filesystem calls to create/write files. If an Android app decides to write onto that partition, there needs to be a program running on the Windows side to tell Windows' filesystem driver "Hey I'm going to create this file". Otherwise Windows will never see that file.
(I'm just guessing here, maybe there is a function to re-read the FAT?)
I agree with you, if the internal filesystem can't be mounted as a filesystem on most PCs then there should be some sort of virtual/emulation layer.
Come on, any sort of caching scheme will wreak havoc with underhanded updates to the image.
https://github.com/qemu/qemu/commit/de167e416fa3d6e4bbdcac90...
https://github.com/qemu/qemu/commit/a046433a161a1f554be55df8...
The clever/insane thing is it supports writes. It is able to "reverse" those block level operations from the guest to modify the source filesystem on the host.
It was written by the ever exceptional Fabrice Bellard. EDIT: No it wasn't, it was written by Johannes Schindelin, thanks for the clarification in replies.
[1] https://github.com/qemu/qemu/blob/master/block/vvfat.c