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

📄 wrappers.h

📁 vc环境下的pgp源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************
*                                                                           *
*   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 + -