📄 vxdlib.h
字号:
/********************************************************************
* Master header file to be included by VxD generated by VxDWriter. *
* *
* Copyright (c) 1997 by Somnath Kundu. All Rights Reserved. *
*********************************************************************/
#ifndef _VXDLIB_H
#define _VXDLIB_H
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(1)
// Include commonly used DDK header files
#include <basedef.h>
#include <vmm.h>
#include <debug.h>
#include <vwin32.h>
#include <vmmreg.h>
#include <ifs.h>
#include <shell.h>
#include <vtd.h>
#include <dosmgr.h>
#include <winerror.h>
#ifdef WANTVXDWRAPS
#include <vxdwraps.h>
#endif
// Following are include files for the specific type of drivers.
// This listing is not complete and many files come with DDK only
// as INC file. So, please add the necessary files in your VxD or
// here as needed.
#if defined(SUBSYS_BLOCK)
#include <aep.h>
#include <blockdev.h>
#include <config.h>
#include <dcb.h>
#include <ddb.h>
#include <drp.h>
#include <dvt.h>
#include <ida.h>
#include <ilb.h>
#include <ior.h>
#include <iop.h>
#include <irs.h>
#include <isp.h>
#include <ivt.h>
#include <sgd.h>
#include <vrp.h>
#elif defined(SUBSYS_COMM) // Include file for COMM drivers
#include <vcomm.h>
#endif
#define VXDSRVORD(Service) GetVxDServiceOrdinal(Service)
#ifndef _SIZE_T_DEFINED
typedef unsigned int size_t;
#define _SIZE_T_DEFINED
#endif
typedef char* STR;
typedef const STR CSTR;
typedef void *HWND;
typedef void __cdecl FNVOID (void);
typedef FNVOID *PFNVOID,**PPFNVOID;
typedef struct VxD_Desc_Block VMMDDB;
#define ASIZE(Array) (sizeof Array / sizeof Array[0])
//===================================================================
// Register structures for using in vxd service and interrupt
// calling macros.
//===================================================================
typedef struct _DWORDREGS
{
DWORD edi,esi,ebp,res,ebx,edx,ecx,eax,eflags;
WORD es,ds,fs,gs;
} DWORDREGS;
typedef struct _WORDREGS
{
WORD di,res1,si,res2,bp,res3,res4,res5,bx,res6,dx,res7,cx,res8,ax,res9,flags,res10;
WORD es,ds,fs,gs;
} WORDREGS;
typedef struct _BYTEREGS
{
BYTE res[4*4];
BYTE bl,bh,res11,res12,dl,dh,res21,res22,cl,ch,res31,res32,al,ah,res41,res42;
} BYTEREGS;
typedef union _REGS
{
DWORDREGS dr; // DWORD registers
WORDREGS wr; // WORD registers
BYTEREGS br; // BYTE registers
} REGS, *PREGS;
#define DECLARE_REGS REGS _regs
#define DECLARE_PREGS PREGS _pregs
#define EAX _regs.dr.eax
#define EBX _regs.dr.ebx
#define ECX _regs.dr.ecx
#define EDX _regs.dr.edx
#define _EAX _pregs->dr.eax
#define _EBX _pregs->dr.ebx
#define _ECX _pregs->dr.ecx
#define _EDX _pregs->dr.edx
#define ESI _regs.dr.esi
#define EDI _regs.dr.edi
#define EBP _regs.dr.ebp
#define _ESI _pregs->dr.esi
#define _EDI _pregs->dr.edi
#define _EBP _pregs->dr.ebp
#define EFLAGS _regs.dr.eflags
#define _EFLAGS _pregs->dr.eflags
#define DS _regs.dr.ds
#define ES _regs.dr.es
#define GS _regs.dr.fs
#define FS _regs.dr.gs
#define AX _regs.wr.ax
#define BX _regs.wr.bx
#define CX _regs.wr.cx
#define DX _regs.wr.dx
#define _AX _pregs->wr.ax
#define _BX _pregs->wr.bx
#define _CX _pregs->wr.cx
#define _DX _pregs->wr.dx
#define SI _regs.wr.si
#define DI _regs.wr.di
#define BP _regs.wr.bp
#define _SI _pregs->wr.si
#define _DI _pregs->wr.di
#define _BP _pregs->wr.bp
#define FLAGS _regs.wr.flags
#define _FLAGS _pregs->wr.flags
#define AL _regs.br.al
#define AH _regs.br.ah
#define BL _regs.br.bl
#define BH _regs.br.bh
#define CL _regs.br.cl
#define CH _regs.br.ch
#define DL _regs.br.dl
#define DH _regs.br.dh
#define _AL _pregs->br.al
#define _AH _pregs->br.ah
#define _BL _pregs->br.bl
#define _BH _pregs->br.bh
#define _CL _pregs->br.cl
#define _CH _pregs->br.ch
#define _DL _pregs->br.dl
#define _DH _pregs->br.dh
#define EFLAG_CF 0x0001 // Carry flag
#define EFLAG_PF 0x0004 // Parity flag
#define EFLAG_AF 0x0010 // Adjust flag
#define EFLAG_ZF 0x0040 // Zero flag
#define EFLAG_SF 0x0080 // Sign flag
#define EFLAG_DF 0x0400 // Direction flag
#define EFLAG_OF 0x0800 // Overflow flag
//===================================================================
// Macro to access ring3 client register structure
//===================================================================
#define R3_AL pRegs->CBRS.Client_AL
#define R3_BL pRegs->CBRS.Client_BL
#define R3_CL pRegs->CBRS.Client_CL
#define R3_DL pRegs->CBRS.Client_DL
#define R3_AH pRegs->CBRS.Client_AH
#define R3_BH pRegs->CBRS.Client_BH
#define R3_CH pRegs->CBRS.Client_CH
#define R3_DH pRegs->CBRS.Client_DH
#define R3_AX pRegs->CWRS.Client_AX
#define R3_BX pRegs->CWRS.Client_BX
#define R3_CX pRegs->CWRS.Client_CX
#define R3_DX pRegs->CWRS.Client_DX
#define R3_SI pRegs->CWRS.Client_SI
#define R3_DI pRegs->CWRS.Client_DI
#define R3_BP pRegs->CWRS.Client_BP
#define R3_SP pRegs->CWRS.Client_SP
#define R3_IP pRegs->CWRS.Client_IP
#define R3_Flags pRegs->CWRS.Client_Flags
#define R3_AltIP pRegs->CWRS.Client_Alt_IP
#define R3_AltSP pRegs->CWRS.Client_Alt_SP
#define R3_EAX pRegs->CRS.Client_EAX
#define R3_EBX pRegs->CRS.Client_EBX
#define R3_ECX pRegs->CRS.Client_ECX
#define R3_EDX pRegs->CRS.Client_EDX
#define R3_ESI pRegs->CRS.Client_ESI
#define R3_EDI pRegs->CRS.Client_EDI
#define R3_EBP pRegs->CRS.Client_EBP
#define R3_ESP pRegs->CRS.Client_ESP
#define R3_EIP pRegs->CRS.Client_EIP
#define R3_EFlags pRegs->CRS.Client_EFlags
#define R3_CS pRegs->CRS.Client_CS
#define R3_DS pRegs->CRS.Client_DS
#define R3_ES pRegs->CRS.Client_ES
#define R3_FS pRegs->CRS.Client_FS
#define R3_GS pRegs->CRS.Client_GS
#define R3_SS pRegs->CRS.Client_SS
#define R3_AltESP pRegs->CRS.Client_Alt_ESP
#define R3_AltEIP pRegs->CRS.Client_Alt_EIP
#define R3_AltEFlags pRegs->CRS.Client_Alt_EFlags
#define R3_AltCS pRegs->CRS.Client_Alt_CS
#define R3_AltDS pRegs->CRS.Client_Alt_DS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -