NTVDM is not only an application, but also a subsystem. Many parts of
the NT Kernel themselves are dedicated to supporting certain NTVDM
operations.
Best regards,
Alex Ionescu
Barubary wrote:
In any case,
NTVDM is a completely separate subsystem that actually
"Boots up" with its own ROM/BIOS and has its own memory handlers,
ivt, idt, gdt, ldt, etc. It emulates everything it can, but sometimes
it can't and it raises exceptions (which is why many DOS apps won't
work). So, by being an emulator, it has full control over its
internal virtual memory. However, I'm still not convinced that the
actual ntvdm.exe process allocates, in Windows, the first 0x10000 bytes.
NTVDM is a user-mode application. You can put a thread into V86 mode
in your own process using NtSetContextThread()'s EFLAGS value (V86
isn't masked). NTVDM seems almost identical to a standard Win32
application except for the slightly different exception handling
methods. The "VDD" documentation in the DDK kinda shows how this
mechanism works, letting you load a DLL into NTVDM's process space.
Melissa
_______________________________________________
Ros-dev mailing list
Ros-dev(a)reactos.com
http://reactos.com:8080/mailman/listinfo/ros-dev