Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++ BUILD Version: 0001
Copyright (c) 1990-1999 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.
--*/
#if _MSC_VER > 1000
#pragma once
#endif
#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
*/
|