📄 vmm.h
字号:
VMM_Service (_AddFreePhysPage, VMM_ICODE)
VMM_Service (_PageResetHandlePAddr)
VMM_Service (_SetLastV86Page, VMM_ICODE)
VMM_Service (_GetLastV86Page)
VMM_Service (_MapFreePhysReg)
VMM_Service (_UnmapFreePhysReg)
VMM_Service (_XchgFreePhysReg)
VMM_Service (_SetFreePhysRegCalBk, VMM_ICODE)
VMM_Service (Get_Next_Arena, VMM_ICODE)
VMM_Service (Get_Name_Of_Ugly_TSR, VMM_ICODE)
VMM_Service (Get_Debug_Options, VMM_ICODE)
/*ENDMACROS*/
/*
* Flags for AddFreePhysPage
*/
#define AFPP_SWAPOUT 0x0001 // physical memory that must be swapped out
// and subsequently restored at system exit
/*
* Flags for PageChangePager
*/
#define PCP_CHANGEPAGER 0x1 // change the pager for the page range
#define PCP_CHANGEPAGERDATA 0x2 // change the pager data dword for the pages
#define PCP_VIRGINONLY 0x4 // make the above changes to virgin pages only
/*
* Bits for the ECX return of Get_Next_Arena
*/
#define GNA_HIDOSLINKED 0x0002 // High DOS arenas linked when WIN386 started
#define GNA_ISHIGHDOS 0x0004 // High DOS arenas do exist
/*MACROS*/
VMM_Service (Set_Physical_HMA_Alias, VMM_ICODE)
VMM_Service (_GetGlblRng0V86IntBase, VMM_ICODE)
VMM_Service (_Add_Global_V86_Data_Area, VMM_ICODE)
VMM_Service (GetSetDetailedVMError)
/*ENDMACROS*/
/*
* Error code values for the GetSetDetailedVMError service. PLEASE NOTE
* that all of these error code values need to have bits set in the high
* word. This is to prevent collisions with other VMDOSAPP standard errors.
* Also, the low word must be non-zero.
*
* First set of errors (high word = 0001) are intended to be used
* when a VM is CRASHED (VNE_Crashed or VNE_Nuked bit set on
* VM_Not_Executeable).
*
* PLEASE NOTE that each of these errors (high word == 0001) actually
* has two forms:
*
* 0001xxxxh
* 8001xxxxh
*
* The device which sets the error initially always sets the error with
* the high bit CLEAR. The system will then optionally set the high bit
* depending on the result of the attempt to "nicely" crash the VM. This
* bit allows the system to tell the user whether the crash is likely or
* unlikely to destabalize the system.
*/
#define GSDVME_PRIVINST 0x00010001 /* Privledged instruction */
#define GSDVME_INVALINST 0x00010002 /* Invalid instruction */
#define GSDVME_INVALPGFLT 0x00010003 /* Invalid page fault */
#define GSDVME_INVALGPFLT 0x00010004 /* Invalid GP fault */
#define GSDVME_INVALFLT 0x00010005 /* Unspecified invalid fault */
#define GSDVME_USERNUKE 0x00010006 /* User requested NUKE of VM */
#define GSDVME_DEVNUKE 0x00010007 /* Device specific problem */
#define GSDVME_DEVNUKEHDWR 0x00010008 /* Device specific problem:
* invalid hardware fiddling
* by VM (invalid I/O)
*/
#define GSDVME_NUKENOMSG 0x00010009 /* Supress standard messages:
* SHELL_Message used for
* custom msg.
*/
#define GSDVME_OKNUKEMASK 0x80000000 /* "Nice nuke" bit */
/*
* Second set of errors (high word = 0002) are intended to be used
* when a VM start up is failed (VNE_CreateFail, VNE_CrInitFail, or
* VNE_InitFail bit set on VM_Not_Executeable).
*/
#define GSDVME_INSMEMV86 0x00020001 /* base V86 mem - V86MMGR */
#define GSDVME_INSV86SPACE 0x00020002 /* Kb Req too large - V86MMGR */
#define GSDVME_INSMEMXMS 0x00020003 /* XMS Kb Req - V86MMGR */
#define GSDVME_INSMEMEMS 0x00020004 /* EMS Kb Req - V86MMGR */
#define GSDVME_INSMEMV86HI 0x00020005 /* Hi DOS V86 mem - DOSMGR
* V86MMGR
*/
#define GSDVME_INSMEMVID 0x00020006 /* Base Video mem - VDD */
#define GSDVME_INSMEMVM 0x00020007 /* Base VM mem - VMM
* CB, Inst Buffer
*/
#define GSDVME_INSMEMDEV 0x00020008 /* Couldn't alloc base VM
* memory for device.
*/
#define GSDVME_CRTNOMSG 0x00020009 /* Supress standard messages:
* SHELL_Message used for
* custom msg.
*/
/*MACROS*/
VMM_Service (Is_Debug_Chr)
// Mono_Out services
VMM_Service (Clear_Mono_Screen)
VMM_Service (Out_Mono_Chr)
VMM_Service (Out_Mono_String)
VMM_Service (Set_Mono_Cur_Pos)
VMM_Service (Get_Mono_Cur_Pos)
VMM_Service (Get_Mono_Chr)
// Service locates a byte in ROM
VMM_Service (Locate_Byte_In_ROM, VMM_ICODE)
VMM_Service (Hook_Invalid_Page_Fault)
VMM_Service (Unhook_Invalid_Page_Fault)
/*ENDMACROS*/
/*
* Flag bits of IPF_Flags
*/
#define IPF_PGDIR 0x00000001 /* Page directory entry not-present */
#define IPF_V86PG 0x00000002 /* Unexpected not present Page in V86 */
#define IPF_V86PGH 0x00000004 /* Like IPF_V86PG at high linear */
#define IPF_INVTYP 0x00000008 /* page has invalid not present type */
#define IPF_PGERR 0x00000010 /* pageswap device failure */
#define IPF_REFLT 0x00000020 /* re-entrant page fault */
#define IPF_VMM 0x00000040 /* Page fault caused by a VxD */
#define IPF_PM 0x00000080 /* Page fault by VM in Prot Mode */
#define IPF_V86 0x00000100 /* Page fault by VM in V86 Mode */
/*MACROS*/
VMM_Service (Set_Delete_On_Exit_File)
VMM_Service (Close_VM)
/*ENDMACROS*/
/*
* Flags for Close_VM service
*/
#define CVF_CONTINUE_EXEC_BIT 0
#define CVF_CONTINUE_EXEC (1 << CVF_CONTINUE_EXEC_BIT)
/*MACROS*/
VMM_Service (Enable_Touch_1st_Meg) // Debugging only
VMM_Service (Disable_Touch_1st_Meg) // Debugging only
VMM_Service (Install_Exception_Handler)
VMM_Service (Remove_Exception_Handler)
VMM_Service (Get_Crit_Status_No_Block)
/*ENDMACROS*/
/* ASM
; Check if VMM service table has changed above this service
.errnz @@Get_Crit_Status_No_Block - 100F1h
*/
#ifdef WIN40SERVICES
/*************************************************************************
*************************************************************************
*
* END OF 3.10 SERVICE TABLE MUST NOT SHUFFLE SERVICES BEFORE THIS POINT
* FOR COMPATIBILITY.
*************************************************************************
*************************************************************************/
/*MACROS*/
VMM_Service (_GetLastUpdatedThreadExecTime)
VMM_Service (_Trace_Out_Service)
VMM_Service (_Debug_Out_Service)
VMM_Service (_Debug_Flags_Service)
/*ENDMACROS*/
#endif /* WIN40SERVICES */
/*
* Flags for _Debug_Flags_Service service.
*
* Don't change these unless you really really know what you're doing.
* We need to define these even if we are in WIN31COMPAT mode.
*/
#define DFS_LOG_BIT 0
#define DFS_LOG (1 << DFS_LOG_BIT)
#define DFS_PROFILE_BIT 1
#define DFS_PROFILE (1 << DFS_PROFILE_BIT)
#define DFS_TEST_CLD_BIT 2
#define DFS_TEST_CLD (1 << DFS_TEST_CLD_BIT)
#define DFS_NEVER_REENTER_BIT 3
#define DFS_NEVER_REENTER (1 << DFS_NEVER_REENTER_BIT)
#define DFS_TEST_REENTER_BIT 4
#define DFS_TEST_REENTER (1 << DFS_TEST_REENTER_BIT)
#define DFS_NOT_SWAPPING_BIT 5
#define DFS_NOT_SWAPPING (1 << DFS_NOT_SWAPPING_BIT)
#define DFS_TEST_BLOCK_BIT 6
#define DFS_TEST_BLOCK (1 << DFS_TEST_BLOCK_BIT)
#define DFS_RARE_SERVICES 0xFFFFFF80
#define DFS_EXIT_NOBLOCK (DFS_RARE_SERVICES+0)
#define DFS_ENTER_NOBLOCK (DFS_RARE_SERVICES+DFS_TEST_BLOCK)
#define DFS_TEST_NEST_EXEC (DFS_RARE_SERVICES+1)
#ifdef WIN40SERVICES
/*MACROS*/
VMM_Service (VMMAddImportModuleName)
VMM_Service (VMM_Add_DDB)
VMM_Service (VMM_Remove_DDB)
VMM_Service (Test_VM_Ints_Enabled)
VMM_Service (_BlockOnID)
VMM_Service (Schedule_Thread_Event)
VMM_Service (Cancel_Thread_Event)
VMM_Service (Set_Thread_Time_Out)
VMM_Service (Set_Async_Time_Out)
VMM_Service (_AllocateThreadDataSlot)
VMM_Service (_FreeThreadDataSlot)
/*ENDMACROS*/
/*
* Flag equates for _CreateMutex
*/
#define MUTEX_MUST_COMPLETE 1L
#define MUTEX_NO_CLEANUP_THREAD_STATE 2L
/*MACROS*/
VMM_Service (_CreateMutex)
VMM_Service (_DestroyMutex)
VMM_Service (_GetMutexOwner)
VMM_Service (Call_When_Thread_Switched)
VMM_Service (VMMCreateThread)
VMM_Service (_GetThreadExecTime)
VMM_Service (VMMTerminateThread)
VMM_Service (Get_Cur_Thread_Handle)
VMM_Service (Test_Cur_Thread_Handle)
VMM_Service (Get_Sys_Thread_Handle)
VMM_Service (Test_Sys_Thread_Handle)
VMM_Service (Validate_Thread_Handle)
VMM_Service (Get_Initial_Thread_Handle)
VMM_Service (Test_Initial_Thread_Handle)
VMM_Service (Debug_Test_Valid_Thread_Handle)
VMM_Service (Debug_Test_Cur_Thread)
VMM_Service (VMM_GetSystemInitState)
VMM_Service (Cancel_Call_When_Thread_Switched)
VMM_Service (Get_Next_Thread_Handle)
VMM_Service (Adjust_Thread_Exec_Priority)
VMM_Service (_Deallocate_Device_CB_Area)
VMM_Service (Remove_IO_Handler)
VMM_Service (Remove_Mult_IO_Handlers)
VMM_Service (Unhook_V86_Int_Chain)
VMM_Service (Unhook_V86_Fault)
VMM_Service (Unhook_PM_Fault)
VMM_Service (Unhook_VMM_Fault)
VMM_Service (Unhook_Device_Service)
VMM_Service (_PageReserve)
VMM_Service (_PageCommit)
VMM_Service (_PageDecommit)
VMM_Service (_PagerRegister)
VMM_Service (_PagerQuery)
VMM_Service (_PagerDeregister)
VMM_Service (_ContextCreate)
VMM_Service (_ContextDestroy)
VMM_Service (_PageAttach)
VMM_Service (_PageFlush)
VMM_Service (_SignalID)
VMM_Service (_PageCommitPhys)
VMM_Service (_Register_Win32_Services)
VMM_Service (Cancel_Call_When_Not_Critical)
VMM_Service (Cancel_Call_When_Idle)
VMM_Service (Cancel_Call_When_Task_Switched)
VMM_Service (_Debug_Printf_Service)
VMM_Service (_EnterMutex)
VMM_Service (_LeaveMutex)
VMM_Service (Simulate_VM_IO)
VMM_Service (Signal_Semaphore_No_Switch)
VMM_Service (_ContextSwitch)
VMM_Service (_PageModifyPermissions)
VMM_Service (_PageQuery)
VMM_Service (_EnterMustComplete)
VMM_Service (_LeaveMustComplete)
VMM_Service (_ResumeExecMustComplete)
/*ENDMACROS*/
/*
* Flag equates for _GetThreadTerminationStatus
*/
#define THREAD_TERM_STATUS_CRASH_PEND 1L
#define THREAD_TERM_STATUS_NUKE_PEND 2L
#define THREAD_TERM_STATUS_SUSPEND_PEND 4L
/*MACROS*/
VMM_Service (_GetThreadTerminationStatus)
VMM_Service (_GetInstanceInfo)
/*ENDMACROS*/
/*
* Return values for _GetInstanceInfo
*/
#define INSTINFO_NONE 0 /* no data instanced in range */
#define INSTINFO_SOME 1 /* some data instanced in range */
#define INSTINFO_ALL 2 /* all data instanced in range */
/*MACROS*/
VMM_Service (_ExecIntMustComplete)
VMM_Service (_ExecVxDIntMustComplete)
VMM_Service (Begin_V86_Serialization)
VMM_Service (Unhook_V86_Page)
VMM_Service (VMM_GetVxDLocationList)
VMM_Service (VMM_GetDDBList)
VMM_Service (Unhook_NMI_Event)
VMM_Service (Get_Instanced_V86_Int_Vector)
VMM_Service (Get_Set_Real_DOS_PSP)
/*ENDMACROS*/
#define GSRDP_Set 0x0001
/*MACROS*/
VMM_Service (Call_Priority_Thread_Event)
VMM_Service (Get_System_Time_Address)
VMM_Service (Get_Crit_Status_Thread)
VMM_Service (Get_DDB)
VMM_Service (Directed_Sys_Control)
/*ENDMACROS*/
// Registry APIs for VxDs
/*MACROS*/
VMM_Service (_RegOpenKey)
VMM_Service (_RegCloseKey)
VMM_Service (_RegCreateKey)
VMM_Service (_RegDeleteKey)
VMM_Service (_RegEnumKey)
VMM_Service (_RegQueryValue)
VMM_Service (_RegSetValue)
VMM_Service (_RegDeleteValue)
VMM_Service (_RegEnumValue)
VMM_Service (_RegQueryValueEx)
VMM_Service (_RegSetValueEx)
/*ENDMACROS*/
#ifndef REG_SZ // define only if not there already
#define REG_SZ 0x0001
#define REG_BINARY 0x0003
#endif
#ifndef HKEY_LOCAL_MACHINE // define only if not there already
#define HKEY_CLASSES_ROOT 0x80000000
#define HKEY_CURRENT_USER 0x80000001
#define HKEY_LOCAL_MACHINE 0x80000002
#define HKEY_USERS 0x80000003
#define HKEY_PERFORMANCE_DATA 0x80000004
#define HKEY_CURRENT_CONFIG 0x80000005
#define HKEY_DYN_DATA 0x80000006
#endif
/*MACROS*/
VMM_Service (_CallRing3)
VMM_Service (Exec_PM_Int)
VMM_Service (_RegFlushKey)
VMM_Service (_PageCommitContig)
VMM_Service (_GetCurrentContext)
VMM_Service (_LocalizeSprintf)
VMM_Service (_LocalizeStackSprintf)
VMM_Service (Call_Restricted_Event)
VMM_Service (Cancel_Restricted_Event)
VMM_Service (Register_PEF_Provider, VMM_ICODE)
VMM_Service (_GetPhysPageInfo)
VMM_Service (_RegQueryInfoKey)
VMM_Service (MemArb_Reserve_Pages)
/*ENDMACROS*/
/*
* Return values for _GetPhysPageInfo
*/
#define PHYSINFO_NONE 0 /* no pages in the specified range exist */
#define PHYSINFO_SOME 1 /* some pages in the specified range exist */
#define PHYSINFO_ALL 2 /* all pages in the specified range exist */
// New timeslicer services
/*MACROS*/
VMM_Service (Time_Slice_Sys_VM_Idle)
VMM_Service (Ti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -