📄 wrappers.h
字号:
/****************************************************************************
* *
* VPICD services *
* *
****************************************************************************/
typedef struct
{
WORD VID_IRQ_Number; // IRQ to virtualize
WORD VID_Options;
// VPICD_OPT_CAN_SHARE: allow other VxDs to virtualize IRQ also
// VPICD_OPT_REF_DATA: pass VID_Hw_Int_Ref as param to Hw_Int_Handler
DWORD VID_Hw_Int_Proc; // callback for hardware interrupt
DWORD VID_Virt_Int_Proc;
DWORD VID_EOI_Proc;
DWORD VID_Mask_Change_Proc;
DWORD VID_IRET_Proc;
DWORD VID_IRET_Time_Out;
PVOID VID_Hw_Int_Ref; // pass this data to Hw_Int_Handler
} VPICD_IRQ_DESCRIPTOR;
typedef DWORD IRQHANDLE;
MAKE_HEADER(IRQHANDLE,_stdcall,VPICD_Virtualize_IRQ, (VPICD_IRQ_DESCRIPTOR *pIrqDesc))
MAKE_HEADER(void,_stdcall,VPICD_Physically_Mask, (IRQHANDLE hndIrq))
MAKE_HEADER(void,_stdcall,VPICD_Physically_Unmask, (IRQHANDLE hndIrq))
MAKE_HEADER(void,_stdcall,VPICD_Force_Default_Behavior, (IRQHANDLE hndIrq))
MAKE_HEADER(void,_stdcall,VPICD_Phys_EOI, (IRQHANDLE hndIrq))
MAKE_HEADER(void,_stdcall,VPICD_Set_Int_Request, (IRQHANDLE hIRQ, \
VMHANDLE hVM))
MAKE_HEADER(void,_stdcall,VPICD_Clear_Int_Request, (IRQHANDLE hIRQ, \
VMHANDLE hVM))
#define VPICD_Virtualize_IRQ PREPEND(VPICD_Virtualize_IRQ)
#define VPICD_Physically_Mask PREPEND(VPICD_Physically_Mask)
#define VPICD_Physically_Unmask PREPEND(VPICD_Physically_Unmask)
#define VPICD_Force_Default_Behavior PREPEND(VPICD_Force_Default_Behavior)
#define VPICD_Phys_EOI PREPEND(VPICD_Phys_EOI)
#define VPICD_Set_Int_Request PREPEND(VPICD_Set_Int_Request)
#define VPICD_Clear_Int_Request PREPEND(VPICD_Clear_Int_Request)
/****************************************************************************
* *
* VDMAD services *
* *
****************************************************************************/
#define DMA_type_verify 0x00
#define DMA_type_write 0x04
#define DMA_type_read 0x08
#define DMA_AutoInit 0x10
#define DMA_AdrDec 0x20
#define DMA_demand_mode 0x00
#define DMA_single_mode 0x40
#define DMA_block_mode 0x80
#define DMA_cascade 0xc0
#define DMA_mode_mask 0xc0 // mask to isolate controller mode bits (above)
#define DMA_chan_sel 0x03
#define NONE_LOCKED 0
#define ALL_LOCKED 1
#define SOME_LOCKED 2
typedef struct
{
DWORD PhysAddr;
DWORD Size;
} REGION;
typedef struct Extended_DDS_Struc
{
DWORD DDS_size;
DWORD DDS_linear;
WORD DDS_seg;
WORD RESERVED;
WORD DDS_avail;
WORD DDS_used;
} EXTENDED_DDS, *PEXTENDED_DDS;
typedef struct
{
EXTENDED_DDS dds;
union
{
REGION aRegionInfo[16];
DWORD aPte[16];
};
} DDS, *PDDS;
typedef DWORD DMAHANDLE;
MAKE_HEADER(DWORD,cdecl,VDMAD_Scatter_Lock, ( VMHANDLE hVM, \
DWORD Flags, \
PDDS pDDS, \
PDWORD pPteOffset ))
MAKE_HEADER(DMAHANDLE, cdecl, VDMAD_Virtualize_Channel, (BYTE ch, CALLBACK pfCallback ))
MAKE_HEADER(void, _stdcall, VDMAD_Set_Region_Info, (DMAHANDLE DMAHandle, \
BYTE BufferId, \
BOOL LockStatus,
DWORD Region, \
DWORD RegionSize, \
DWORD PhysAddr ))
MAKE_HEADER(void, _stdcall, VDMAD_Set_Phys_State, (DMAHANDLE DMAHandle, \
VMHANDLE hVM, \
WORD Mode, \
WORD ExtMode ))
MAKE_HEADER(void, _stdcall, VDMAD_Phys_Unmask_Channel, (DMAHANDLE DMAHandle, \
VMHANDLE hVM ))
MAKE_HEADER(void, _stdcall, VDMAD_Phys_Mask_Channel, (DMAHANDLE DMAHandle))
#define VDMAD_Virtualize_Channel PREPEND(VDMAD_Virtualize_Channel)
#define VDMAD_Set_Region_Info PREPEND(VDMAD_Set_Region_Info)
#define VDMAD_Set_Phys_State PREPEND(VDMAD_Set_Phys_State)
#define VDMAD_Scatter_Lock PREPEND(VDMAD_Scatter_Lock)
#define VDMAD_Phys_Unmask_Channel PREPEND(VDMAD_Phys_Unmask_Channel)
#define VDMAD_Phys_Mask_Channel PREPEND(VDMAD_Phys_Unmask_Channel)
/****************************************************************************
* *
* SHELL services *
* *
****************************************************************************/
MAKE_HEADER(VMHANDLE, _stdcall, SHELL_Resolve_Contention, (VMHANDLE hndOwner, \
VMHANDLE hndContender, \
char *DeviceName ))
MAKE_HEADER(BOOL,cdecl,_SHELL_PostMessage, (HANDLE hWnd, \
DWORD uMsg, \
WORD wParam, \
DWORD lParam, \
CALLBACK pCallback, \
void *dwRefData))
#define SHELL_Resolve_Contention PREPEND(SHELL_Resolve_Contention)
#define _SHELL_PostMessage PREPEND(_SHELL_PostMessage)
/****************************************************************************
* *
* VWIN32 services *
* *
****************************************************************************/
MAKE_HEADER(void,cdecl,_VWIN32_QueueUserApc, (void *pR3Proc, \
DWORD Param, \
PTHCB hThread))
MAKE_HEADER(BOOL,cdecl,_VWIN32_SetWin32Event, (EVENTHANDLE hEvent) )
#define _VWIN32_QueueUserApc PREPEND(_VWIN32_QueueUserApc)
#define _VWIN32_SetWin32Event PREPEND(_VWIN32_SetWin32Event)
#endif // _VMMXWRAP_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -