[ros-dev] 2GB Boundary

Barubary barubary at cox.net
Sun Oct 10 17:41:10 CEST 2004


> 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 



More information about the Ros-dev mailing list