[NTVDM]
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Tue, 15 Sep 2015 20:09:11 +0000 (20:09 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Tue, 15 Sep 2015 20:09:11 +0000 (20:09 +0000)
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

reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/device.c

index 7f98cc3..e1a83fb 100644 (file)
@@ -58,8 +58,8 @@ static VOID DosCallDriver(DWORD Driver, PDOS_REQUEST_HEADER Request)
     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);