|
|
1.1 ! root 1: /*++ BUILD Version: 0001 ! 2: ! 3: Copyright (c) 1990 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: ISVBOP.H ! 8: ! 9: Abstract: ! 10: ! 11: This is the header file supporting third party bops. ! 12: isvbop.inc is the inc file for this h file. ! 13: ! 14: Note: ! 15: Following include file uses 'DB' to define assembly macros. Some ! 16: assemblers use 'emit' instead. If you are using such a compiler, ! 17: you will have to change db's to emit's. ! 18: ! 19: --*/ ! 20: ! 21: ! 22: #define BOP_3RDPARTY 0x58 ! 23: #define BOP_UNSIMULATE 0xFE ! 24: ! 25: /* XLATOFF */ ! 26: ! 27: /** RegisterModule - This Bop call is made from the 16 bit module ! 28: * to register a third party DLL with the bop ! 29: * manager. This call returns a handle to the ! 30: * 16bit caller which is to be used later to ! 31: * dispatch a call to the DLL. ! 32: * ! 33: * INPUT: ! 34: * Client DS:SI - asciiz string of DLL name. ! 35: * Client ES:DI - asciiz string of Init Routine in the DLL. (Optional) ! 36: * Client DS:BX - asciiz string to Dispatch routine in the DLL. ! 37: * ! 38: * OUTPUT: ! 39: * SUCCESS: ! 40: * Client Carry Clear ! 41: * Client AX = Handle (non Zero) ! 42: * FAILURE: ! 43: * Client Carry Set ! 44: * Client AX = Error Code ! 45: * AX = 1 - DLL not found ! 46: * AX = 2 - Dispacth routine not found. ! 47: * AX = 3 - Init Routine Not Found ! 48: * AX = 4 - Insufficient Memory ! 49: * ! 50: * NOTES: ! 51: * RegisterModule results in loading the DLL (specified in DS:SI). ! 52: * Its Init routine (specified in ES:DI) is called. Its Dispatch ! 53: * routine (specified in DS:BX) is stored away and all the calls ! 54: * made from DispatchCall are dispacthed to this routine. ! 55: * If ES and DI both are null than the caller did'nt supply the init ! 56: * routine. ! 57: */ ! 58: ! 59: #define RegisterModule() _asm db 0xC4, 0xC4, BOP_3RDPARTY, 0x0 ! 60: ! 61: /** UnRegisterModule - This Bop call is made from the 16 bit module ! 62: * to unregister a third party DLL with the bop ! 63: * manager. ! 64: * ! 65: * INPUT: ! 66: * Client AX - Handle returned by RegisterModule Call. ! 67: * ! 68: * OUTPUT: ! 69: * None (VDM Is terminated with a debug message if Handle is invalid) ! 70: * ! 71: * NOTES: ! 72: * Use it if initialization of 16bit app fails after registering the ! 73: * Bop. ! 74: */ ! 75: ! 76: #define UnRegisterModule() _asm db 0xC4, 0xC4, BOP_3RDPARTY, 0x1 ! 77: ! 78: /** DispacthCall - This Bop call is made from the 16 bit module ! 79: * to pass a request to its DLL. ! 80: * ! 81: * INPUT: ! 82: * Client AX - Handle returned by RegisterModule Call. ! 83: * ! 84: * OUTPUT: ! 85: * None (DLL should set the proper output registers etc.) ! 86: * (VDM Is terminated with a debug message if Handle is invalid) ! 87: * ! 88: * NOTES: ! 89: * Use it to pass a request to 32bit DLL. The request index and the ! 90: * parameters are passed in different registers. These register settings ! 91: * are private to the 16bit module and its associated VDD. Bop manager ! 92: * does'nt know anything about these registers. ! 93: */ ! 94: #define DispatchCall() _asm db 0xC4, 0xC4, BOP_3RDPARTY, 0x2 ! 95: ! 96: /*** VDDUnSimulate16 ! 97: * ! 98: * This service causes the simulation of intel instructions to stop and ! 99: * control to return to VDD. ! 100: * ! 101: * INPUT ! 102: * None ! 103: * ! 104: * OUTPUT ! 105: * None ! 106: * ! 107: * NOTES ! 108: * This service is a macro intended for 16bit stub-drivers. At the ! 109: * end of worker routine stub-driver should use it. ! 110: */ ! 111: ! 112: #define VDDUnSimulate16() _asm db 0xC4, 0xC4, BOP_UNSIMULATE ! 113: ! 114: /* XLATON */ ! 115: ! 116: ! 117: /* ASM ! 118: RegisterModule macro ! 119: db 0C4h, 0C4h, BOP_3RDPARTY, 0 ! 120: endm ! 121: ! 122: UnRegisterModule macro ! 123: db 0C4h, 0C4h, BOP_3RDPARTY, 1 ! 124: endm ! 125: ! 126: DispatchCall macro ! 127: db 0C4h, 0C4h, BOP_3RDPARTY, 2 ! 128: endm ! 129: ! 130: VDDtUnSimulate16 macro ! 131: db 0C4h, 0C4h, BOP_UNSIMULATE ! 132: endm ! 133: ! 134: */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.