📄 vxbuild.h
字号:
///////////////////////////////////////////////////////////////////////
// VxBuild.h
//
// Tetradyne VxBuild header.
//
// VxBuild Version 1
//
// Copyright (C) 1997-1999, Tetradyne Software Inc.
// All rights reserved.
#ifndef VXBUILD_H
#define VXBUILD_H
#ifdef __cplusplus
extern "C"
{
#endif
#define WANTVXDWRAPS
#include <basedef.h>
#undef NULL
#define NULL 0
#include <vmm.h>
#include <debug.h>
#include <vmmreg.h>
#include <vpicd.h>
#include <vwin32.h>
#include <vcomm.h>
#include <vpowerd.h>
#include <vxdldr.h>
#include <vtd.h>
// Redefine VTD_Get_Real_Time
void VXDINLINE
Tetradyne_VTD_Get_Real_Time(PULONG pnHigh, PULONG pnLow)
{
VxDCall(VTD_Get_Real_Time)
_asm mov ecx, eax
_asm mov eax, [pnHigh]
_asm mov [eax], edx
_asm mov eax, [pnLow]
_asm mov [eax], ecx
}
#include <vxdwraps.h>
#undef VTD_Get_Real_Time
#define VTD_Get_Real_Time Tetradyne_VTD_Get_Real_Time
#include <stdarg.h>
#include <configmg.h>
#include <regstr.h>
#include <string.h>
#include <vdmad.h>
///////////////////////////////////////////////////////////////////////
// Intrinsic routines
#pragma intrinsic(memcmp, memcpy, memset, strcat, strcmp, strcpy, strlen)
///////////////////////////////////////////////////////////////////////
// Typedefs
typedef struct
{
ULONG EDI;
ULONG ESI;
ULONG EBP;
ULONG ESP;
ULONG EBX;
ULONG EDX;
ULONG ECX;
ULONG EAX;
ULONG Flags;
} REGISTERS, *PREGISTERS;
///////////////////////////////////////////////////////////////////////
// CTL_CODE macro
#ifndef CTL_CODE
#define FILE_DEVICE_UNKNOWN 0x00000022
#define METHOD_BUFFERED 0
#define METHOD_IN_DIRECT 1
#define METHOD_OUT_DIRECT 2
#define METHOD_NEITHER 3
#define FILE_ANY_ACCESS 0
#define CTL_CODE( DeviceType, Function, Method, Access ) ( \
((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)
#endif // ifndef CTL_CODE
///////////////////////////////////////////////////////////////////////
// Various defines
#define PROFILE_NOT_FOUND 0x01
#define PROFILE_NO_VALUE 0x10
///////////////////////////////////////////////////////////////////////
// DECLARE_VIRTUAL_DEVICE_xxx macros
//
// Defines the Device Desciptor Block (DDB) for the VxD.
#define DDB_DDK_VERSION 0x400
#define DDB_DEVICE_ID UNDEFINED_DEVICE_ID
#define DDB_MAJOR_VER 1
#define DDB_MINOR_VER 0
#define DDB_INIT_ORDER UNDEFINED_INIT_ORDER
#ifdef __cplusplus
extern "C" struct VxD_Desc_Block VXD_DDB;
#else
struct VxD_Desc_Block VXD_DDB;
#endif
#define DECLARE_VIRTUAL_DEVICE(c1,c2,c3,c4,c5,c6,c7,c8) \
void _OuterControlProc(); \
struct VxD_Desc_Block VXD_DDB = { \
0, \
DDB_DDK_VERSION, \
DDB_DEVICE_ID, \
DDB_MAJOR_VER, \
DDB_MINOR_VER, \
0, \
{(c1),(c2),(c3),(c4),(c5),(c6),(c7),(c8)}, \
DDB_INIT_ORDER, \
(ULONG) _OuterControlProc, \
0, 0, 0, 0, \
0, \
0, 0, 0, \
'Prev', \
sizeof(struct VxD_Desc_Block), \
'Rsv1', \
'Rsv2', \
'Rsv3', \
};
#define DECLARE_VIRTUAL_DEVICE_1(c1) \
DECLARE_VIRTUAL_DEVICE((c1),' ',' ',' ',' ',' ',' ',' ')
#define DECLARE_VIRTUAL_DEVICE_2(c1,c2) \
DECLARE_VIRTUAL_DEVICE((c1),(c2),' ',' ',' ',' ',' ',' ')
#define DECLARE_VIRTUAL_DEVICE_3(c1,c2,c3) \
DECLARE_VIRTUAL_DEVICE((c1),(c2),(c3),' ',' ',' ',' ',' ')
#define DECLARE_VIRTUAL_DEVICE_4(c1,c2,c3,c4) \
DECLARE_VIRTUAL_DEVICE((c1),(c2),(c3),(c4),' ',' ',' ',' ')
#define DECLARE_VIRTUAL_DEVICE_5(c1,c2,c3,c4,c5) \
DECLARE_VIRTUAL_DEVICE((c1),(c2),(c3),(c4),(c5),' ',' ',' ')
#define DECLARE_VIRTUAL_DEVICE_6(c1,c2,c3,c4,c5,c6) \
DECLARE_VIRTUAL_DEVICE((c1),(c2),(c3),(c4),(c5),(c6),' ',' ')
#define DECLARE_VIRTUAL_DEVICE_7(c1,c2,c3,c4,c5,c6,c7) \
DECLARE_VIRTUAL_DEVICE((c1),(c2),(c3),(c4),(c5),(c6),(c7),' ')
#define DECLARE_VIRTUAL_DEVICE_8(c1,c2,c3,c4,c5,c6,c7,c8) \
DECLARE_VIRTUAL_DEVICE((c1),(c2),(c3),(c4),(c5),(c6),(c7),(c8))
///////////////////////////////////////////////////////////////////////
// Dispatch map macros for dispatching system control messages.
#define BEGIN_DISPATCH_MAP \
void _stdcall _ControlProc(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD); \
void _declspec(naked) _OuterControlProc() { \
{_asm push edi} \
{_asm push esi} \
{_asm push edx} \
{_asm push ecx} \
{_asm push ebx} \
{_asm push eax} \
{_asm call _ControlProc} \
{_asm ret} \
} \
\
void _stdcall _ControlProc(DWORD r_eax, DWORD r_ebx, \
DWORD r_ecx, DWORD r_edx, DWORD r_esi, DWORD r_edi) { \
switch (r_eax) {
#define END_DISPATCH_MAP \
default: \
break; \
} \
{_asm clc} \
return; \
}
// BOOL OnSysCriticalInit(HVM hVM, PVOID pCommandTail, PVOID pRefData);
#define ON_SYS_CRITICAL_INIT(f) case SYS_CRITICAL_INIT: \
f((HVM)r_ebx, (PVOID)r_esi, (PVOID)r_edx); \
{_asm cmp eax, 1} \
return;
// BOOL OnDeviceInit(HVM hVM, PVOID pCommandTail, PVOID pRefData);
#define ON_DEVICE_INIT(f) case DEVICE_INIT: \
f((HVM)r_ebx, (PVOID)r_esi, (PVOID)r_edx); \
{_asm cmp eax, 1} \
return;
// BOOL OnInitComplete(HVM hVM, PVOID pCommandTail, PVOID pRefData);
#define ON_INIT_COMPLETE(f) case INIT_COMPLETE: \
f((HVM)r_ebx, (PVOID)r_esi, (PVOID)r_edx); \
{_asm cmp eax, 1} \
return;
// VOID OnSysVmInit(HVM hVM);
#define ON_SYS_VM_INIT(f) case SYS_VM_INIT: \
f((HVM)r_ebx); \
break;
// VOID OnSysVmTerminate(HVM hVM);
#define ON_SYS_VM_TERMINATE(f) case SYS_VM_TERMINATE: \
f((HVM)r_ebx); \
break;
// VOID OnSystemExit(HVM hVM);
#define ON_SYSTEM_EXIT(f) case SYSTEM_EXIT: \
f((HVM)r_ebx); \
break;
// VOID OnSysCriticalExit();
#define ON_SYS_CRITICAL_EXIT(f) case SYS_CRITICAL_EXIT: \
f(); \
break;
// BOOL OnCreateVm(HVM hVM);
#define ON_CREATE_VM(f) case CREATE_VM: \
f((HVM)r_ebx); \
{_asm cmp eax, 1} \
return;
// BOOL OnVmCriticalInit(HVM hVM);
#define ON_VM_CRITICAL_INIT(f) case VM_CRITICAL_INIT: \
f((HVM)r_ebx); \
{_asm cmp eax, 1} \
return;
// BOOL OnVmInit(HVM hVM);
#define ON_VM_INIT(f) case VM_INIT: \
f((HVM)r_ebx); \
{_asm cmp eax, 1} \
return;
// VOID OnVmTerminate(HVM hVM);
#define ON_VM_TERMINATE(f) case VM_TERMINATE: \
f((HVM)r_ebx); \
break;
// VOID OnVmNotExecutable(HVM hVM, DWORD fFlags);
#define ON_VM_NOT_EXECUTEABLE(f) case VM_NOT_EXECUTEABLE: \
f((HVM)r_ebx, r_edx); \
break;
// VOID OnDestroyVm(HVM hVM);
#define ON_DESTORY_VM(f) case DESTROY_VM: \
f((HVM)r_ebx); \
break;
// VOID OnVmSuspend(HVM hVM);
#define ON_VM_SUSPEND(f) case VM_SUSPEND: \
f((HVM)r_ebx); \
break;
// VOID OnVmResume(HVM hVM);
#define ON_VM_RESUME(f) case VM_RESUME: \
f((HVM)r_ebx); \
break;
// VOID OnSetDeviceFocus(HVM hVM, DWORD nID, DWORD fFlags, HVM hAssociatedVM);
#define ON_SET_DEVICE_FOCUS(f) case SET_DEVICE_FOCUS: \
f((HVM)r_ebx, r_edx, r_esi, (HVM)r_edi); \
break;
// VOID OnBeginMessageMode(HVM hVM);
#define ON_BEGIN_MESSAGE_MODE(f) case BEGIN_MESSAGE_MODE: \
f((HVM)r_ebx); \
break;
// VOID OnEndMessageMode(HVM hVM);
#define ON_END_MESSAGE_MODE(f) case END_MESSAGE_MODE: \
f((HVM)r_ebx); \
break;
// VOID OnRebootProcessor();
#define ON_REBOOT_PROCESSOR(f) case REBOOT_PROCESSOR: \
f(); \
break;
// BOOL OnQueryDestroy();
#define ON_QUERY_DESTROY(f) case QUERY_DESTROY: \
f((HVM)r_ebx); \
{_asm cmp eax, 1} \
return;
// VOID OnDebugQuery();
#define ON_DEBUG_QUERY(f) case DEBUG_QUERY: \
f(); \
break;
// BOOL OnBeginPmApp(HVM hVM, DWORD fFlags, struct pmcb_s* pPmcb);
#define ON_BEGIN_PM_APP(f) case BEGIN_PM_APP: \
f((HVM)r_ebx, r_edx, (struct pmcb_s*)r_edi); \
{_asm cmp eax, 1} \
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -