📄 vxbuild.h
字号:
#define Get_System_Time PREPEND(Get_System_Time)
#define Get_VM_Exec_Time PREPEND(Get_VM_Exec_Time)
#define Set_PM_Int_Vector PREPEND(Set_PM_Int_Vector)
#define Simulate_Int PREPEND(Simulate_Int)
#define Simulate_Iret PREPEND(Simulate_Iret)
#define Simulate_Far_Call PREPEND(Simulate_Far_Call)
#define Simulate_Far_Jmp PREPEND(Simulate_Far_Jmp)
#define Simulate_Far_Ret PREPEND(Simulate_Far_Ret)
#define Simulate_Far_Ret_N PREPEND(Simulate_Far_Ret_N)
#define Simulate_Pop PREPEND(Simulate_Pop)
#define Simulate_Push PREPEND(Simulate_Push)
#define Build_Int_Stack_Frame PREPEND(Build_Int_Stack_Frame)
#define _ModifyPageBits PREPEND(_ModifyPageBits)
#define MMGR_SetNULPageAddr PREPEND(MMGR_SetNULPageAddr)
#define _Allocate_LDT_Selector PREPEND(_Allocate_LDT_Selector)
#define Hook_VMM_Fault PREPEND(Hook_VMM_Fault)
#define Exec_Int PREPEND(Exec_Int)
#define Allocate_PM_App_CB_Area PREPEND(Allocate_PM_App_CB_Area)
#define Save_Client_State PREPEND(Save_Client_State)
#define Restore_Client_State PREPEND(Restore_Client_State)
#define Exec_VxD_Int PREPEND(Exec_VxD_Int)
//#define Hook_Device_Service PREPEND(Hook_Device_Service)
#define System_Control PREPEND(System_Control)
#define Simulate_IO PREPEND(Simulate_IO)
#define Install_Mult_IO_Handlers PREPEND(Install_Mult_IO_Handlers)
#define Install_IO_Handler PREPEND(Install_IO_Handler)
#define Enable_Global_Trapping PREPEND(Enable_Global_Trapping)
#define Enable_Local_Trapping PREPEND(Enable_Local_Trapping)
#define Disable_Global_Trapping PREPEND(Disable_Global_Trapping)
#define Disable_Local_Trapping PREPEND(Disable_Local_Trapping)
#define _AddInstanceItem PREPEND(_AddInstanceItem)
#define _Allocate_Device_CB_Area PREPEND(_Allocate_Device_CB_Area)
#define Get_Profile_Decimal_Int PREPEND(Get_Profile_Decimal_Int)
#define Get_Profile_Fixed_Point PREPEND(Get_Profile_Fixed_Point)
#define Convert_Decimal_String PREPEND(Convert_Decimal_String)
#define Convert_Fixed_Point_String PREPEND(Convert_Fixed_Point_String)
#define Convert_Hex_String PREPEND(Convert_Hex_String)
#define Convert_Boolean_String PREPEND(Convert_Boolean_String)
#define Get_Profile_String PREPEND(Get_Profile_String)
#define Get_Next_Profile_String PREPEND(Get_Next_Profile_String)
#define OpenFile PREPEND(OpenFile)
#define Get_PSP_Segment PREPEND(Get_PSP_Segment)
#define Set_PM_Int_Type PREPEND(Set_PM_Int_Type)
#define Get_Last_Updated_VM_Exec_Time PREPEND(Get_Last_Updated_VM_Exec_Time)
#define Get_Next_Arena PREPEND(Get_Next_Arena)
#define Get_Name_Of_Ugly_TSR PREPEND(Get_Name_Of_Ugly_TSR)
#define Set_Physical_HMA_Alias PREPEND(Set_Physical_HMA_Alias)
#define Get_Crit_Status_No_Block PREPEND(Get_Crit_Status_No_Block)
#define _GetLastUpdatedThreadExecTime PREPEND(_GetLastUpdatedThreadExecTime)
#define _AllocateThreadDataSlot PREPEND(_AllocateThreadDataSlot)
#define _FreeThreadDataSlot PREPEND(_FreeThreadDataSlot)
#define Call_When_Thread_Switched PREPEND(Call_When_Thread_Switched)
#define _GetThreadExecTime PREPEND(_GetThreadExecTime)
#define Test_Cur_Thread_Handle PREPEND(Test_Cur_Thread_Handle)
#define Get_Sys_Thread_Handle PREPEND(Get_Sys_Thread_Handle)
#define Test_Sys_Thread_Handle PREPEND(Test_Sys_Thread_Handle)
#define Validate_Thread_Handle PREPEND(Validate_Thread_Handle)
#define Get_Initial_Thread_Handle PREPEND(Get_Initial_Thread_Handle)
#define Test_Initial_Thread_Handle PREPEND(Test_Initial_Thread_Handle)
#define Get_Next_Thread_Handle PREPEND(Get_Next_Thread_Handle)
#define _Deallocate_Device_CB_Area PREPEND(_Deallocate_Device_CB_Area)
#define Remove_IO_Handler PREPEND(Remove_IO_Handler)
#define Remove_Mult_IO_Handlers PREPEND(Remove_Mult_IO_Handlers)
#define Unhook_Device_Service PREPEND(Unhook_Device_Service)
#define _PageCommit PREPEND(_PageCommit)
#define Cancel_Call_When_Not_Critical PREPEND(Cancel_Call_When_Not_Critical)
#define Signal_Semaphore_No_Switch PREPEND(Signal_Semaphore_No_Switch)
#define Get_Crit_Status_Thread PREPEND(Get_Crit_Status_Thread)
#define Time_Slice_Sleep PREPEND(Time_Slice_Sleep)
#define _CopyPageTable PREPEND(_CopyPageTable)
/////////////////// VWIN32 Services
#ifndef WIN98DDK
// The Win98 DDK provides a wrapper for this routine
WORD VXDINLINE
VWIN32_Get_Version(VOID)
{
WORD w;
VxDCall(VWIN32_Get_Version);
_asm mov [w], ax
return (w);
}
#endif
HANDLE VXDINLINE
VWIN32_GetCurrentProcessHandle(VOID)
{
HANDLE h;
VxDCall(VWIN32_GetCurrentProcessHandle);
_asm mov [h], eax
return (h);
}
MAKE_HEADER(void,_stdcall,VWIN32_DIOCCompletionRoutine,(HANDLE hEvent))
MAKE_HEADER(BOOL,_stdcall,VWIN32_EnterCrstR0,(PVOID pcrSection))
MAKE_HEADER(BOOL,_stdcall,VWIN32_GetCurrentDirectory,(PCHAR pszBuf))
MAKE_HEADER(BOOL,_stdcall,VWIN32_LeaveCrstR0,(PVOID pcrSection))
MAKE_HEADER(DWORD,_stdcall,VWIN32_SysErrorBox,(VSEB* pDlgInfo))
MAKE_HEADER(void,_stdcall,VWIN32_TerminateApp,(HANDLE hApp))
MAKE_HEADER(BOOL,_stdcall,_VWIN32_CloseVxDHandle,(HANDLE hObject))
MAKE_HEADER(BOOL,_cdecl,_VWIN32_CopyMem,(PVOID pSrc, PVOID pDest, DWORD cb, PDWORD pcbDone))
MAKE_HEADER(HANDLE,_stdcall,_VWIN32_CreateRing0Thread,(DWORD cbStack, DWORD dwContext, PFN pfnProc, PFN pfnFail, PHANDLE pR0Handle))
MAKE_HEADER(BOOL,_cdecl,_VWIN32_Get_Thread_Context,(PTCB ptcb, PVOID pContext))
MAKE_HEADER(BOOL,_cdecl,_VWIN32_IsClientWin32,())
MAKE_HEADER(BOOL,_stdcall,_VWIN32_PulseWin32Event,(HANDLE hEvent))
MAKE_HEADER(BOOL,_cdecl,_VWIN32_QueueUserApc,(PVOID pfnRing3APC, DWORD dwParam, PTCB ptcb))
MAKE_HEADER(BOOL,_stdcall,_VWIN32_ResetWin32Event,(HANDLE hEvent))
MAKE_HEADER(BOOL,_cdecl,_VWIN32_Set_Thread_Context,(PTCB ptcb, PVOID pContext))
MAKE_HEADER(BOOL,_stdcall,_VWIN32_SetWin32Event,(HANDLE hEvent))
MAKE_HEADER(DWORD,_stdcall,_VWIN32_WaitMultipleObjects,(DWORD nObjects, PHANDLE pHandles, DWORD dwTimeout, DWORD dwFlags, BOOL bWaitAPC))
MAKE_HEADER(DWORD,_stdcall,_VWIN32_WaitSingleObject,(HANDLE hObject,DWORD dwTimeout,BOOL bAlertable))
#define VWIN32_DIOCCompletionRoutine PREPEND(VWIN32_DIOCCompletionRoutine)
#define VWIN32_EnterCrstR0 PREPEND(VWIN32_EnterCrstR0)
#define VWIN32_GetCurrentDirectory PREPEND(VWIN32_GetCurrentDirectory)
#define VWIN32_LeaveCrstR0 PREPEND(VWIN32_LeaveCrstR0)
#define VWIN32_SysErrorBox PREPEND(VWIN32_SysErrorBox)
#define VWIN32_TerminateApp PREPEND(VWIN32_TerminateApp)
#define _VWIN32_CloseVxDHandle PREPEND(_VWIN32_CloseVxDHandle)
#define _VWIN32_CopyMem PREPEND(_VWIN32_CopyMem)
#define _VWIN32_CreateRing0Thread PREPEND(_VWIN32_CreateRing0Thread)
#define _VWIN32_Get_Thread_Context PREPEND(_VWIN32_Get_Thread_Context)
#define _VWIN32_IsClientWin32 PREPEND(_VWIN32_IsClientWin32)
#define _VWIN32_PulseWin32Event PREPEND(_VWIN32_PulseWin32Event)
#define _VWIN32_QueueUserApc PREPEND(_VWIN32_QueueUserApc)
#define _VWIN32_ResetWin32Event PREPEND(_VWIN32_ResetWin32Event)
#define _VWIN32_Set_Thread_Context PREPEND(_VWIN32_Set_Thread_Context)
#define _VWIN32_SetWin32Event PREPEND(_VWIN32_SetWin32Event)
#define _VWIN32_WaitMultipleObjects PREPEND(_VWIN32_WaitMultipleObjects)
#define _VWIN32_WaitSingleObject PREPEND(_VWIN32_WaitSingleObject)
///////////////////////////////////////////////////////////////////////
// Interrupt procedure thunk macros
//
// ISR prototype: BOOL IntProc(HVM hVM, HIRQ hIRQ, PVOID pRefData);
typedef void (*_THUNK_CALLBACK)(void);
#define DECLARE_HW_INT_PROC_THUNK(_ProcName) \
void _ProcName##_Thunk(void);
#define IMPLEMENT_HW_INT_PROC_THUNK(_ProcName) \
void __declspec(naked) _ProcName##_Thunk() \
{ \
{_asm push edx} \
{_asm push eax} \
{_asm push ebx} \
{_asm call _ProcName} \
{_asm add esp, 12} \
{_asm cmp eax, 1} \
{_asm ret} \
}
#define HW_INT_PROC_THUNK(_ProcName) _ProcName##_Thunk
///////////////////////////////////////////////////////////////////////
// Event handler thunk macros
//
// Handler prototype:
//
// VOID Handler(HVM hVM, PVOID pRefData, CLIENT_STRUCT* pcrs, PTCB ptcb)
#define DECLARE_EVENT_HANDLER_THUNK(_ProcName) \
void _ProcName##_Thunk(void);
#define IMPLEMENT_EVENT_HANDLER_THUNK(_ProcName) \
void __declspec(naked) _ProcName##_Thunk() \
{ \
{_asm push edi} \
{_asm push ebp} \
{_asm push edx} \
{_asm push ebx} \
{_asm call _ProcName} \
{_asm add esp, 16} \
{_asm ret} \
}
#define EVENT_HANDLER_THUNK(_ProcName) _ProcName##_Thunk
///////////////////////////////////////////////////////////////////////
// Timeout handler thunk macros
//
// Handler prototype:
//
// VOID Handler(HVM hVM, DWORD nTardiness, PVOID pRefData, PCRS pcrs)
#define DECLARE_TIMEOUT_HANDLER_THUNK(_ProcName) \
void _ProcName##_Thunk(void);
#define IMPLEMENT_TIMEOUT_HANDLER_THUNK(_ProcName) \
void __declspec(naked) _ProcName##_Thunk() \
{ \
{_asm push ebp} \
{_asm push edx} \
{_asm push ecx} \
{_asm push ebx} \
{_asm call _ProcName} \
{_asm add esp, 16} \
{_asm ret} \
}
#define TIMEOUT_HANDLER_THUNK(_ProcName) _ProcName##_Thunk
///////////////////////////////////////////////////////////////////////
// Call_When_VM_Returns handler
//
// Callback prototype:
//
// VOID Callback(HVM hVM, PTCB ptcb, PVOID pRefData,
// CLIENT_STRUCT* pcrs, ULONG fFlags)
#define DECLARE_CALL_WHEN_VM_RETURNS_THUNK(_ProcName) \
void _ProcName##_Thunk(void);
#define IMPLEMENT_CALL_WHEN_VM_RETURNS_THUNK(_ProcName) \
void __declspec(naked) _ProcName##_Thunk() \
{ \
{_asm pushf} \
{_asm push ebp} \
{_asm push edx} \
{_asm push edi} \
{_asm push ebx} \
{_asm call _ProcName} \
{_asm add esp, 20} \
{_asm ret} \
}
#define CALL_WHEN_VM_RETURNS_THUNK(_ProcName) _ProcName##_Thunk
///////////////////////////////////////////////////////////////////////
// Critical section callback
//
// Callback prototype:
//
// VOID Callback(HVM hCurrentVM, PTCB hThread, PVOID pRefData,
// CLIENT_STRUCT* pcrs);
#define DECLARE_CRITICAL_SECTION_CALLBACK_THUNK(_ProcName) \
void _ProcName##_Thunk(void);
#define IMPLEMENT_CRITICAL_SECTION_CALLBACK_THUNK(_ProcName) \
void __declspec(naked) _ProcName##_Thunk() \
{ \
{_asm push ebp} \
{_asm push edx} \
{_asm push edi} \
{_asm push ebx} \
{_asm call _ProcName} \
{_asm add esp, 16} \
{_asm ret} \
}
#define CRITICAL_SECTION_CALLBACK_THUNK(_ProcName) _ProcName##_Thunk
///////////////////////////////////////////////////////////////////////
// Task switch callback
//
// Callback prototype:
//
// VOID Callback(HVM hOldVM, HVM hCurrentVM);
#define DECLARE_TASK_SWITCH_CALLBACK_THUNK(_ProcName) \
void _ProcName##_Thunk(void);
#define IMPLEMENT_TASK_SWITCH_CALLBACK_THUNK(_ProcName) \
void __declspec(naked) _ProcName##_Thunk() \
{ \
{_asm push ebx} \
{_asm push eax} \
{_asm call _ProcName} \
{_asm add esp, 8} \
{_asm ret} \
}
#define TASK_SWITCH_CALLBACK_THUNK(_ProcName) _ProcName##_Thunk
///////////////////////////////////////////////////////////////////////
// Thread switch callback
//
// Callback prototype:
//
// VOID Callback(PTCB hOldThread, PTCB hNewThread);
#define DECLARE_THREAD_SWITCH_CALLBACK_THUNK(_ProcName) \
void _ProcName##_Thunk(void);
#define IMPLEMENT_THREAD_SWITCH_CALLBACK_THUNK(_ProcName) \
void __declspec(naked) _ProcName##_Thunk() \
{ \
{_asm push edi} \
{_asm push eax} \
{_asm call _ProcName} \
{_asm add esp, 8} \
{_asm ret} \
}
#define THREAD_SWITCH_CALLBACK_THUNK(_ProcName) _ProcName##_Thunk
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -