[filedisk] Require Microsoft VHD footers for booted disk images
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Thu, 3 Jun 2010 20:52:44 +0000 (16:52 -0400)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Thu, 3 Jun 2010 20:52:44 +0000 (16:52 -0400)
commit245932f8633ee72d55346dc92c3f464c8bdb59b5
treed2efaa8aab940df6b6679522e8757303ac4a2d24
parent5b8341d853d404dfc46825c9cfeb46793a312bac
[filedisk] Require Microsoft VHD footers for booted disk images

The previous check for the short MBR magic was really cheap and
could fairly easily result in false positives.  We now require
a Microsoft .VHD "footer" to be within the last 512 bytes of
the disk image.  This works nicely for HDD images right now.

[Un]Fortunately, testing the .ISO case revealed that the code
which iterates through disks in an attempt to find the right
backing disk is running at an IRQL which is incompatible with
IoGetDeviceInterfaces(), which wishes to allocate to pageable
memory.  It would seem best to enqueue this activity, but
neither threaded filedisks nor the GRUB4DOS threaded filedisk
actually implement a new "class" of device, so there's not a
place to throw the previous disk__io routine while we hook a
read/write operation in order to allow for delayed backing
disk discovery.
WinVBlock.dev
src/include/msvhd.h [new file with mode: 0644]
src/winvblock/filedisk/grub4dos.c