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

📄 vxdlib.h

📁 自动生成虚拟设备驱动(VXD)的C++代码的一个库 COOL!
💻 H
📖 第 1 页 / 共 2 页
字号:
/********************************************************************
* 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 + -