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.
|
|
/******************************************************************************
* * (C) Copyright MICROSOFT Corp., 1989-1990 * * Title: INT2FAPI.INC - Windows/386 V86 Application Program Interface * * Version: 3.00 * * Date: 10-Mar-1989 * * Author: RAL * *----------------------------------------------------------------------------- * * Change log: * * DATE REV DESCRIPTION * ----------- --- ---------------------------------------------------------- * 10-Mar-1989 RAL Original for 3.0 * 07-Apr-1989 RAL Added device broadcast equate * 19-Jun-1992 RJC Convert to H file * *============================================================================= * * For information on these APIs please refer to the Windows/386 DDK * appendix on the Int 2Fh Application Program Interface. * *****************************************************************************/
/*
* Interrupt 2Fh is used for Windows/386 API calls. */ #define W386_API_Int 0x2F
/*
* All Windows/386 API Int 2Fh calls must be issued with AH = 16h */ #define W386_Int_Multiplex 0x16
/*
* Values for AL for all Windows/386 API calls */ #define W386_Get_Version 0x00 /* Install check/Get version */
#define W386_Old_Get_VMID_API 0x02 /* Version 2.xx get VMID API call */
#define W386_Startup 0x05 /* Broadcast when Win386 starting */
#define W386_Exit 0x06 /* Broadcast when Win386 exited */
#define W386_Device_Broadcast 0x07 /* Broadcast by virtual device */
#define W386_Startup_Complete 0x08 /* Broadcast when Win386 start is complete */
#define W386_Begin_Exit 0x09 /* Broadcast when Win386 is starting */
/* a NORMAL exit sequence */ #define W386_Windows_ID 0x0A /* Identify windows ver/type */
#define W386_TSR_Identify 0x0B /* Identify TSRs */
#define W386_ROM_Detect 0x0C /* Used by ROM win to detect ROMs */
#define W386_WDEB 0x0D /* Used by wdeb386 */
#define W386_Logo 0x0E /* IO.SYS service for logo management */
#define W386_INT10 0x0F /* IO.SYS service to replace INT 10h hook */
#define W386_Get_Shell 0x11 /* IO.SYS service to return shell info */
#define W386_Get_BIOS_Data 0x12 /* IO.SYS service to return IO.SYS data */
#define W386_Get_SYSDAT_Path 0x13 /* IO.SYS service to return path to SYSTEM.DAT */
#define W386_Set_SYSDAT_Path 0x14 /* IO.SYS service to set path to SYSTEM.DAT */
#define SAVE32_ID 0x1615 /* TSR Id for SAVE32.COM to save 32bit registers */
#define W386_Sleep 0x7F /* Call Time_Slice_Sleep (DX=#ms) */
#define W386_Release_Time 0x80 /* Release cur VM's time-slice */
#define W386_Begin_Critical 0x81 /* Begin critical section */
#define W386_End_Critical 0x82 /* End critical section */
#define W386_Get_Cur_VMID 0x83 /* Returns BX = ID of current VM */
#define W386_Get_Device_API 0x84 /* Returns ES:DI -> Device API */
#define W386_Switch_And_Call 0x85 /* Change VMs and call-back */
#define W386_Test_Int31_Avail 0x86 /* Returns AX=0 if Int 31 avail */
#define W386_Get_PM_Switch_Addr 0x87 /* Get call-back addr for PM */
#define W386_Get_LDT_Base_Sel 0x88 /* Get selector to LDT */
#define W386_Win_Kernel_Idle 0x89 /* Windows kernel idle call */
#define W386_DPMI_Extension 0x8A /* DPMI extension Int 2Fh */
#define W386_Set_Focus 0x8B /* Set focus to specified VM */
#define W386_Restart_Cmd 0x8C /* Win.Com execs specified app */
#define W386_Get_Win32_API 0x8D /* Get Win32 API callback */
#define W386_VM_Title 0x8E /* Assorted VM title APIs */
#define W386_VM_Close 0x8F /* Assorted VM close APIs */
#define W386_Return_RMD 0x90 /* return RMD list */
/*
* Structure for real mode device initialization API. */ struct Win386_Startup_Info_Struc { BYTE SIS_Version[2]; /* AINIT <04h,01h> Structure version */ DWORD SIS_Next_Ptr; /* Seg:Off of next dev in list */ DWORD SIS_Virt_Dev_File_Ptr; /* INIT <0> PSZ of file name to load */ DWORD SIS_Reference_Data; /* Data to be passed to device */ DWORD SIS_Instance_Data_Ptr; /* INIT <0> Ptr to instance data list */ DWORD SIS_Opt_Instance_Data_Ptr;/* INIT <0> Ptr to opt. instance data list */ DWORD SIS_Reclaim_Data_Ptr; /* INIT <0> Ptr to reclaimable data list */ };
/*
* Structure for instance data list. (List terminated with 0 dword). */ struct Instance_Item_Struc { DWORD IIS_Ptr; /* Seg:Off of instance item */ WORD IIS_Size; /* Size of instance item in bytes */ };
/*
* Structure for reclaim data list. (List terminated with 0 Seg). */ struct Reclaim_Item_Struc { WORD RIS_Seg; /* Seg of reclaimable item */ WORD RIS_Paras; /* Size of item, in paragraphs */ DWORD RIS_HookTable; /* Seg:Off of Reclaim_Hook_Table (0 if none) */ WORD RIS_Flags; /* See RIS_* equates (below) */ };
#define RIS_RECLAIM 0x0001 /* segment can be reclaimed during Init_Complete */
#define RIS_RESTORE 0x0002 /* segment contents must be restored prior to System_Exit */
#define RIS_DOSARENA 0x0004 /* segment is a DOS memory block, add to DOS memory pool */
/*
* NOTE: If RIS_HookTable is non-zero, then it is interpreted as a * pointer to a Reclaim_Hook_Table, which provides a means * for the system to automatically unhook a component in a reclaimable * memory block from the rest of the system. It is also IMPORTANT to note * that if a Reclaim_Hook_Table is specified, then the memory block will * not be reclaimed UNLESS the RHT_DISABLED bit is also set. In other * words, if the hooks associated with a block have not been disabled * by the time the system attempts to reclaim the memory (Init_Complete), * then the memory containing those hooks cannot be reclaimed. * * RHT_Num_Hooks is the number of hooks to be unhooked/rehooked at * reclaim/restore time, RHT_Low_Seg is the segment of "stub code" * that is always resident, RHT_High_Seg is the segment of "driver code" * that is contained within (or identical to) RIS_Seg, and the entire * Reclaim_Hook_Table is followed by an array of Reclaim_Hook_Entry * structures, which contain pairs of offsets to dword vector addresses * that must be exchanged in order to disable or re-enable the hooks. * For each pair of offsets, the first is relative to RHT_Low_Seg and the * second is relative to RHT_High_Seg. RHT_Num_Hooks is the number of * Reclaim_Hook_Entry structures in the array. * * The system will only unhook all the hooks in a Reclaim_Hook_Table if * RHT_DISABLED bit is set and RHT_UNHOOKED is NOT set in RHT_Flags (meaning * that a Vxd or other component has assumed responsibility for the code * inside the hooks and has not unhooked them itself). * * Since the Reclaim_Hook_Table must be inside the segment being reclaimed, * it follows that unhooking will occur before memory reclamation, and that * memory restoration will occur before re-hooking. * * VxDs are free to perform their own real-mode vector hooking/unhooking * on their own. This mechanism is used by the DBLSPACE/DRVSPACE drivers, * and is simply exported as a convenience for other drivers. */
/*
* Structure for reclaim hook table. */ struct Reclaim_Hook_Table { WORD RHT_Num_Hooks; /* number of RHE entries following */ WORD RHT_Low_Seg; /* segment each RHE_Low_Off is relative to */ WORD RHT_High_Seg; /* segment each RHE_High_Off is relative to */ WORD RHT_Flags; /* see RHT_* equates (below) */ };
#define RHT_DISABLED 0x0001 /* hooks are disabled, can be unhooked now */
#define RHT_UNHOOKED 0x0002 /* hooks are currently unhooked */
/*
* Structure for reclaim hook entries. There are RHT_Num_Hooks copies * of this structure immediately following the Reclaim_Hook_Table. */ struct Reclaim_Hook_Entry { WORD RHE_Low_Off; WORD RHE_High_Off; };
/*
* Structure for return RMD API. See RMD.H for RMD definitions. */
struct Return_RMD_Struc { DWORD RRS_RMD; /* Seg:Off of rmd chain */ DWORD RRS_Next_Ptr; /* Seg:Off of next RMD chain in list */ };
/*
* Flags passed to the Win_Kernel_Idle call to indicate state of Windows * in the BX register. */ #define Win_Idle_Mouse_Busy 1
#define Win_Idle_Mouse_Busy_Bit 0
/*
* Structure for TSR <-> Windows communication * (W386_TSR_Identify call, AL=0Bh) */ struct TSR_Info_Struc { DWORD TSR_Next; WORD TSR_PSP_Segment; WORD TSR_API_Ver_ID; /* INIT <100h> */ WORD TSR_Exec_Flags; /* INIT <0> */ WORD TSR_Exec_Cmd_Show; /* INIT <0> */ DWORD TSR_Exec_Cmd; /* INIT <0> */ BYTE TSR_Reserved[4]; /* INIT <0> */ DWORD TSR_ID_Block; /* INIT <0> */ DWORD TSR_Data_Block; /* INIT <0> */ };
/*
* TSR_Exec_Flags equates */ #define TSR_WINEXEC 1
#define TSR_LOADLIBRARY 2
#define TSR_OPENDRIVER 4
|