reactos/sdk/include/ddk/vddsvc.h

311 lines
6.9 KiB
C

/*
* vddsvc.h
*
* Windows NT Device Driver Kit
*
* This file is part of the ReactOS DDK package.
*
* Contributors:
* Hermes Belusca-Maito (hermes.belusca@sfr.fr)
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#pragma once
#ifndef _NT_VDD
#include <nt_vdd.h>
#endif
/*
* Interrupts services
*/
#define ICA_MASTER 0
#define ICA_SLAVE 1
VOID
WINAPI
call_ica_hw_interrupt(
_In_ INT ms,
_In_ BYTE line,
_In_ INT count);
#define VDDSimulateInterrupt(ms, line, count) \
call_ica_hw_interrupt((ms), (line), (count)) // Windows specifies a count of 1 ...
/*
* Memory services
*/
#ifdef i386
PBYTE
WINAPI
MGetVdmPointer(
_In_ ULONG Address,
_In_ ULONG Size,
_In_ BOOLEAN ProtectedMode);
#define Sim32GetVDMPointer(Address, Size, Mode) \
MGetVdmPointer((Address), (Size), (Mode))
#define Sim32FlushVDMPointer(Address, Size, Buffer, Mode) TRUE
#else
PBYTE
WINAPI
Sim32GetVDMPointer(
_In_ ULONG Address,
_In_ ULONG Size,
_In_ BOOLEAN ProtectedMode);
BOOLEAN
WINAPI
Sim32FlushVDMPointer(
_In_ ULONG Address,
_In_ ULONG Size,
_In_ PBYTE Buffer,
_In_ BOOLEAN ProtectedMode);
#endif
PBYTE
WINAPI
Sim32pGetVDMPointer(
_In_ ULONG Address,
_In_ BOOLEAN ProtectedMode);
/* This API appears to have never been implemented anywhere... */
#define Sim32FreeVDMPointer(Address, Size, Buffer, Mode) TRUE
#define GetVDMAddress(usSeg, usOff) (((ULONG)(usSeg) << 4) + (ULONG)(usOff))
#define GetVDMPointer(Address, Size, Mode) \
Sim32GetVDMPointer(Address, Size, Mode)
#define FlushVDMPointer(Address, Size, Buffer, Mode) \
Sim32FlushVDMPointer(Address, Size, Buffer, Mode)
#define FreeVDMPointer(Address, Size, Buffer, Mode) \
Sim32FreeVDMPointer(Address, Size, Buffer, Mode)
/*
* Registers manipulation
*/
PVOID WINAPI getIntelRegistersPointer(VOID);
#ifndef _M_MIPS
ULONG WINAPI getEAX(VOID);
VOID WINAPI setEAX(ULONG);
USHORT WINAPI getAX(VOID);
VOID WINAPI setAX(USHORT);
UCHAR WINAPI getAH(VOID);
VOID WINAPI setAH(UCHAR);
UCHAR WINAPI getAL(VOID);
VOID WINAPI setAL(UCHAR);
ULONG WINAPI getEBX(VOID);
VOID WINAPI setEBX(ULONG);
USHORT WINAPI getBX(VOID);
VOID WINAPI setBX(USHORT);
UCHAR WINAPI getBH(VOID);
VOID WINAPI setBH(UCHAR);
UCHAR WINAPI getBL(VOID);
VOID WINAPI setBL(UCHAR);
ULONG WINAPI getECX(VOID);
VOID WINAPI setECX(ULONG);
USHORT WINAPI getCX(VOID);
VOID WINAPI setCX(USHORT);
UCHAR WINAPI getCH(VOID);
VOID WINAPI setCH(UCHAR);
UCHAR WINAPI getCL(VOID);
VOID WINAPI setCL(UCHAR);
ULONG WINAPI getEDX(VOID);
VOID WINAPI setEDX(ULONG);
USHORT WINAPI getDX(VOID);
VOID WINAPI setDX(USHORT);
UCHAR WINAPI getDH(VOID);
VOID WINAPI setDH(UCHAR);
UCHAR WINAPI getDL(VOID);
VOID WINAPI setDL(UCHAR);
ULONG WINAPI getESP(VOID);
VOID WINAPI setESP(ULONG);
USHORT WINAPI getSP(VOID);
VOID WINAPI setSP(USHORT);
ULONG WINAPI getEBP(VOID);
VOID WINAPI setEBP(ULONG);
USHORT WINAPI getBP(VOID);
VOID WINAPI setBP(USHORT);
ULONG WINAPI getESI(VOID);
VOID WINAPI setESI(ULONG);
USHORT WINAPI getSI(VOID);
VOID WINAPI setSI(USHORT);
ULONG WINAPI getEDI(VOID);
VOID WINAPI setEDI(ULONG);
USHORT WINAPI getDI(VOID);
VOID WINAPI setDI(USHORT);
ULONG WINAPI getEIP(VOID);
VOID WINAPI setEIP(ULONG);
USHORT WINAPI getIP(VOID);
VOID WINAPI setIP(USHORT);
USHORT WINAPI getCS(VOID);
VOID WINAPI setCS(USHORT);
USHORT WINAPI getSS(VOID);
VOID WINAPI setSS(USHORT);
USHORT WINAPI getDS(VOID);
VOID WINAPI setDS(USHORT);
USHORT WINAPI getES(VOID);
VOID WINAPI setES(USHORT);
USHORT WINAPI getFS(VOID);
VOID WINAPI setFS(USHORT);
USHORT WINAPI getGS(VOID);
VOID WINAPI setGS(USHORT);
ULONG WINAPI getCF(VOID);
VOID WINAPI setCF(ULONG);
ULONG WINAPI getPF(VOID);
VOID WINAPI setPF(ULONG);
ULONG WINAPI getAF(VOID);
VOID WINAPI setAF(ULONG);
ULONG WINAPI getZF(VOID);
VOID WINAPI setZF(ULONG);
ULONG WINAPI getSF(VOID);
VOID WINAPI setSF(ULONG);
ULONG WINAPI getIF(VOID);
VOID WINAPI setIF(ULONG);
ULONG WINAPI getDF(VOID);
VOID WINAPI setDF(ULONG);
ULONG WINAPI getOF(VOID);
VOID WINAPI setOF(ULONG);
ULONG WINAPI getEFLAGS(VOID);
VOID WINAPI setEFLAGS(ULONG);
USHORT WINAPI getMSW(VOID);
VOID WINAPI setMSW(USHORT);
#else
ULONG WINAPI c_getEAX(VOID);
VOID WINAPI c_setEAX(ULONG);
USHORT WINAPI c_getAX(VOID);
VOID WINAPI c_setAX(USHORT);
UCHAR WINAPI c_getAH(VOID);
VOID WINAPI c_setAH(UCHAR);
UCHAR WINAPI c_getAL(VOID);
VOID WINAPI c_setAL(UCHAR);
ULONG WINAPI c_getEBX(VOID);
VOID WINAPI c_setEBX(ULONG);
USHORT WINAPI c_getBX(VOID);
VOID WINAPI c_setBX(USHORT);
UCHAR WINAPI c_getBH(VOID);
VOID WINAPI c_setBH(UCHAR);
UCHAR WINAPI c_getBL(VOID);
VOID WINAPI c_setBL(UCHAR);
ULONG WINAPI c_getECX(VOID);
VOID WINAPI c_setECX(ULONG);
USHORT WINAPI c_getCX(VOID);
VOID WINAPI c_setCX(USHORT);
UCHAR WINAPI c_getCH(VOID);
VOID WINAPI c_setCH(UCHAR);
UCHAR WINAPI c_getCL(VOID);
VOID WINAPI c_setCL(UCHAR);
ULONG WINAPI c_getEDX(VOID);
VOID WINAPI c_setEDX(ULONG);
USHORT WINAPI c_getDX(VOID);
VOID WINAPI c_setDX(USHORT);
UCHAR WINAPI c_getDH(VOID);
VOID WINAPI c_setDH(UCHAR);
UCHAR WINAPI c_getDL(VOID);
VOID WINAPI c_setDL(UCHAR);
ULONG WINAPI c_getESP(VOID);
VOID WINAPI c_setESP(ULONG);
USHORT WINAPI c_getSP(VOID);
VOID WINAPI c_setSP(USHORT);
ULONG WINAPI c_getEBP(VOID);
VOID WINAPI c_setEBP(ULONG);
USHORT WINAPI c_getBP(VOID);
VOID WINAPI c_setBP(USHORT);
ULONG WINAPI c_getESI(VOID);
VOID WINAPI c_setESI(ULONG);
USHORT WINAPI c_getSI(VOID);
VOID WINAPI c_setSI(USHORT);
ULONG WINAPI c_getEDI(VOID);
VOID WINAPI c_setEDI(ULONG);
USHORT WINAPI c_getDI(VOID);
VOID WINAPI c_setDI(USHORT);
ULONG WINAPI c_getEIP(VOID);
VOID WINAPI c_setEIP(ULONG);
USHORT WINAPI c_getIP(VOID);
VOID WINAPI c_setIP(USHORT);
USHORT WINAPI c_getCS(VOID);
VOID WINAPI c_setCS(USHORT);
USHORT WINAPI c_getSS(VOID);
VOID WINAPI c_setSS(USHORT);
USHORT WINAPI c_getDS(VOID);
VOID WINAPI c_setDS(USHORT);
USHORT WINAPI c_getES(VOID);
VOID WINAPI c_setES(USHORT);
USHORT WINAPI c_getFS(VOID);
VOID WINAPI c_setFS(USHORT);
USHORT WINAPI c_getGS(VOID);
VOID WINAPI c_setGS(USHORT);
ULONG WINAPI c_getCF(VOID);
VOID WINAPI c_setCF(ULONG);
ULONG WINAPI c_getPF(VOID);
VOID WINAPI c_setPF(ULONG);
ULONG WINAPI c_getAF(VOID);
VOID WINAPI c_setAF(ULONG);
ULONG WINAPI c_getZF(VOID);
VOID WINAPI c_setZF(ULONG);
ULONG WINAPI c_getSF(VOID);
VOID WINAPI c_setSF(ULONG);
ULONG WINAPI c_getIF(VOID);
VOID WINAPI c_setIF(ULONG);
ULONG WINAPI c_getDF(VOID);
VOID WINAPI c_setDF(ULONG);
ULONG WINAPI c_getOF(VOID);
VOID WINAPI c_setOF(ULONG);
USHORT WINAPI c_getMSW(VOID);
VOID WINAPI c_setMSW(USHORT);
#endif
/* EOF */