2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
5 * PURPOSE: 32-bit Interrupt Handlers
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 * Hermes Belusca-Maito (hermes.belusca@sfr.fr)
13 /* DEFINES ********************************************************************/
15 /* 32-bit Interrupt Identifiers */
16 #define EMULATOR_MAX_INT32_NUM 0xFF + 1
18 typedef struct _CALLBACK16
20 ULONG TrampolineFarPtr
; // Where the trampoline zone is placed
21 ULONG TrampolineSize
; // Size of the trampoline zone
24 } CALLBACK16
, *PCALLBACK16
;
26 extern const ULONG Int16To32StubSize
;
28 /* FUNCTIONS ******************************************************************/
30 typedef VOID (WINAPI
*EMULATOR_INT32_PROC
)(LPWORD Stack
);
33 InitializeContext(IN PCALLBACK16 Context
,
38 Call16(IN USHORT Segment
,
42 RegisterCallback16(IN ULONG FarPtr
,
43 IN LPBYTE CallbackCode
,
44 IN SIZE_T CallbackSize
,
45 OUT PSIZE_T CodeSize OPTIONAL
);
48 RunCallback16(IN PCALLBACK16 Context
,
52 RegisterInt16(IN ULONG FarPtr
,
54 IN LPBYTE CallbackCode
,
55 IN SIZE_T CallbackSize
,
56 OUT PSIZE_T CodeSize OPTIONAL
);
59 RegisterInt32(IN ULONG FarPtr
,
61 IN EMULATOR_INT32_PROC IntHandler
,
62 OUT PSIZE_T CodeSize OPTIONAL
);
65 Int32Call(IN PCALLBACK16 Context
,
68 VOID WINAPI
Int32Dispatch(LPWORD Stack
);
69 VOID
InitializeCallbacks(VOID
);
71 #endif // _CALLBACK_H_