Author: hbelusca
Date: Tue Sep 15 20:09:11 2015
New Revision: 69246
URL:
http://svn.reactos.org/svn/reactos?rev=69246&view=rev
Log:
[NTVDM]
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
Modified:
trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/device.c
Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/device.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/…
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/device.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/device.c [iso-8859-1] Tue Sep 15
20:09:11 2015
@@ -58,8 +58,8 @@
RtlMoveMemory(&Sda->Request, Request, Request->RequestLength);
/* Call the strategy routine, and then the interrupt routine */
- Call16(HIWORD(Driver), DriverBlock->StrategyRoutine);
- Call16(HIWORD(Driver), DriverBlock->InterruptRoutine);
+ RunCallback16(&DosContext, MAKELONG(DriverBlock->StrategyRoutine ,
HIWORD(Driver)));
+ RunCallback16(&DosContext, MAKELONG(DriverBlock->InterruptRoutine,
HIWORD(Driver)));
/* Get the request structure from ES:BX */
RtlMoveMemory(Request, &Sda->Request, Request->RequestLength);