|
|
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.