There's a known method of booting Windows directly from Linux without machine reboot.
This method uses kexec program that loads "on-the-fly" Linux kernels and grub4dos bootloader modified in such a way to be recognized by kexec as a kernel. When grub4dos is loaded, the machine returns to the OS boot stage.
A problem occurs if method is used on machines with SATA II (second generation SATA controllers), that don't support IDE-compartible interface. In this case grub4dos isn't able to initialize the device properly and request hard drive...
It seems that problem may be solved with SATA controller or even bus reset.
Does anybody know how can it be done? Or could provide any other ways to solve this?..