Correctly call the device strategy/interrupt routines. Should fix a bunch of weird errors. This also fixes the NTVDM crash when Command&Conquer terminates, however it doesn't fix the DOS/4GW exception it encounters.
CORE-9678
svn path=/trunk/; revision=69246
- Use a NULL timeout for infinite waits instead of waiting for 100 ns. CORE-10188 #resolve
- Wait for available read data in user mode to handle thread termination
- Return STATUS_IO_TIMEOUT also for a zero-length timeout. Fixes Wine tests
- Avoid MmGetSystemAddressForMdl
- Acquiring a mutex is not a UserRequest
svn path=/trunk/; revision=69236
Fix the file header description. Consistently use .endm for closing a macro started with .macro.
[NTVDM]
- Add "_clean" targets to generated asm16 targets.
- Fix CMake dependency generation in a somewhat hackish way: I don't know how to cleanly specify the location of generated files for custom targets. And it is also hackish because in a CMake custom command which depends on the COMMAND.COM target, I also need to explicitely say that the command depends on the output file created by the COMMAND.COM target...
- Add COMMAND.COM to the CD files, even if NTVDM doesn't use an external command.com for now. CORE-5221
svn path=/trunk/; revision=69234
Implement the IOCTL IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED:
- Implement MountMgrVolumeMountPointDeleteed()
- Rename a struct var to reflect its real usage
svn path=/trunk/; revision=69232
- Fix memory leak in IopDetectResourceConflict. While we're at it use pool tagging, kernel handles and avoid INVALID_HANDLE_VALUE.
svn path=/trunk/; revision=69227
- Fix the GCC macro for structure declaration, so that referencing an offset to the structure doesn't fail anymore (ie. doing "mov dx, offset MyStruct" doesn't assemble to "mov dx, 0x100").
This fixes NTVDM not being able to start any DOS app. Reported by Aleksander Rechitskiy.
CORE-9677 CORE-9679 #resolve
CORE-9678
[NTVDM]
- Fix newline in DPRINT.
svn path=/trunk/; revision=69211
- Add support for DOS VDM reentry, i.e. the fact that a DOS app can start a 32-bit app, which in turn can start another DOS app, ad infinitum...
CORE-9711 CORE-9773 #resolve
- Add a small COMMAND.COM which is, for now, completely included in NTVDM. This COMMAND.COM is needed in order to support reentrancy. The fact that I chose to put it inside NTVDM is that any user can use instead his/her own COMMAND.COM, while retaining the possibility to perform VDM reentrancy (on Windows, if you remove the COMMAND.COM in windows\system32 and replace it with your own, you will break VDM reentrancy on windows' ntvdm).
CORE-5221 #resolve #comment I choose for the moment an internal COMMAND.COM, but you can recompile NTVDM to use it externally instead.
Global remarks:
- Quite a few DPRINTs were added for diagnostic purposes (since DOS reentrancy is a new feature), to be sure everything behaves as expected when being used with a large panel of applications. They will be removed when everything is OK.
- Support for current directories and 16/32-bit environment translation (in ntvdm + basevdm-side) remain to be implemented.
Other changes:
- Improve a bit the VDM shutdown code by gathering it at one place (there's still room for other improvements).
- Add suppport for properly pausing/resuming NTVDM.
- Bufferize some console events before dispatching.
Have fun ;^)
svn path=/trunk/; revision=69204