diff options
Diffstat (limited to '')
-rw-r--r-- | public/sdk/inc/isvbop.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/public/sdk/inc/isvbop.h b/public/sdk/inc/isvbop.h new file mode 100644 index 000000000..eba3dc91c --- /dev/null +++ b/public/sdk/inc/isvbop.h @@ -0,0 +1,134 @@ +/*++ BUILD Version: 0001 + +Copyright (c) 1990 Microsoft Corporation + +Module Name: + + ISVBOP.H + +Abstract: + + This is the header file supporting third party bops. + isvbop.inc is the inc file for this h file. + +Note: + Following include file uses 'DB' to define assembly macros. Some + assemblers use 'emit' instead. If you are using such a compiler, + you will have to change db's to emit's. + +--*/ + + +#define BOP_3RDPARTY 0x58 +#define BOP_UNSIMULATE 0xFE + +/* XLATOFF */ + +/** RegisterModule - This Bop call is made from the 16 bit module + * to register a third party DLL with the bop + * manager. This call returns a handle to the + * 16bit caller which is to be used later to + * dispatch a call to the DLL. + * + * INPUT: + * Client DS:SI - asciiz string of DLL name. + * Client ES:DI - asciiz string of Init Routine in the DLL. (Optional) + * Client DS:BX - asciiz string to Dispatch routine in the DLL. + * + * OUTPUT: + * SUCCESS: + * Client Carry Clear + * Client AX = Handle (non Zero) + * FAILURE: + * Client Carry Set + * Client AX = Error Code + * AX = 1 - DLL not found + * AX = 2 - Dispacth routine not found. + * AX = 3 - Init Routine Not Found + * AX = 4 - Insufficient Memory + * + * NOTES: + * RegisterModule results in loading the DLL (specified in DS:SI). + * Its Init routine (specified in ES:DI) is called. Its Dispatch + * routine (specified in DS:BX) is stored away and all the calls + * made from DispatchCall are dispacthed to this routine. + * If ES and DI both are null than the caller did'nt supply the init + * routine. + */ + +#define RegisterModule() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0x0 + +/** UnRegisterModule - This Bop call is made from the 16 bit module + * to unregister a third party DLL with the bop + * manager. + * + * INPUT: + * Client AX - Handle returned by RegisterModule Call. + * + * OUTPUT: + * None (VDM Is terminated with a debug message if Handle is invalid) + * + * NOTES: + * Use it if initialization of 16bit app fails after registering the + * Bop. + */ + +#define UnRegisterModule() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0x1 + +/** DispacthCall - This Bop call is made from the 16 bit module + * to pass a request to its DLL. + * + * INPUT: + * Client AX - Handle returned by RegisterModule Call. + * + * OUTPUT: + * None (DLL should set the proper output registers etc.) + * (VDM Is terminated with a debug message if Handle is invalid) + * + * NOTES: + * Use it to pass a request to 32bit DLL. The request index and the + * parameters are passed in different registers. These register settings + * are private to the 16bit module and its associated VDD. Bop manager + * does'nt know anything about these registers. + */ +#define DispatchCall() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0x2 + +/*** VDDUnSimulate16 + * + * This service causes the simulation of intel instructions to stop and + * control to return to VDD. + * + * INPUT + * None + * + * OUTPUT + * None + * + * NOTES + * This service is a macro intended for 16bit stub-drivers. At the + * end of worker routine stub-driver should use it. + */ + +#define VDDUnSimulate16() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_UNSIMULATE + +/* XLATON */ + + +/* ASM +RegisterModule macro + db 0C4h, 0C4h, BOP_3RDPARTY, 0 + endm + +UnRegisterModule macro + db 0C4h, 0C4h, BOP_3RDPARTY, 1 + endm + +DispatchCall macro + db 0C4h, 0C4h, BOP_3RDPARTY, 2 + endm + +VDDUnSimulate16 macro + db 0C4h, 0C4h, BOP_UNSIMULATE + endm + + */ |