⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vxbuild.h

📁 Chikago_src.zip
💻 H
📖 第 1 页 / 共 3 页
字号:
#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 + -