diff --git a/include/ddk/isvbop.h b/include/ddk/isvbop.h new file mode 100644 index 00000000000..088e9e6dcda --- /dev/null +++ b/include/ddk/isvbop.h @@ -0,0 +1,51 @@ +/* + * isvbop.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. + * + */ + +/* + * The corresponding ASM header of this file is isvbop.inc. + */ + +#pragma once + +/* BOP Identifiers */ +#define BOP_3RDPARTY 0x58 // 3rd-party VDD BOP +#define BOP_UNSIMULATE 0xFE // Stop execution + +#if defined(__GNUC__) + +#define RegisterModule() __asm__(".byte 0xC4, 0xC4, %c0, 0" : : "i"(BOP_3RDPARTY)) +#define UnRegisterModule() __asm__(".byte 0xC4, 0xC4, %c0, 1" : : "i"(BOP_3RDPARTY)) +#define DispatchCall() __asm__(".byte 0xC4, 0xC4, %c0, 2" : : "i"(BOP_3RDPARTY)) +#define VDDUnSimulate16() __asm__(".byte 0xC4, 0xC4, %c0" : : "i"(BOP_UNSIMULATE)) + +#elif defined(_MSC_VER) + +#define RegisterModule() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0 +#define UnRegisterModule() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 1 +#define DispatchCall() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 2 +#define VDDUnSimulate16() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_UNSIMULATE + +#else +#error Unknown compiler for inline assembler +#endif + +/* EOF */ diff --git a/include/ddk/isvbop.inc b/include/ddk/isvbop.inc new file mode 100644 index 00000000000..7a13b4bc27a --- /dev/null +++ b/include/ddk/isvbop.inc @@ -0,0 +1,49 @@ +/* + * isvbop.inc + * + * 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. + * + */ + +/* + * This is the corresponding ASM header for isvbop.h. + * Please refer to isvbop.h for information about these interfaces. + */ + +#include + +BOP_3RDPARTY = HEX(58) +BOP_UNSIMULATE = HEX(FE) + +MACRO(RegisterModule) + .byte HEX(C4), HEX(C4), BOP_3RDPARTY, 0 +ENDM + +MACRO(UnRegisterModule) + .byte HEX(C4), HEX(C4), BOP_3RDPARTY, 1 +ENDM + +MACRO(DispatchCall) + .byte HEX(C4), HEX(C4), BOP_3RDPARTY, 2 +ENDM + +MACRO(VDDUnSimulate16) + .byte HEX(C4), HEX(C4), BOP_UNSIMULATE +ENDM + +/* EOF */ diff --git a/include/ddk/nt_vdd.h b/include/ddk/nt_vdd.h new file mode 100644 index 00000000000..199c6c64fc7 --- /dev/null +++ b/include/ddk/nt_vdd.h @@ -0,0 +1,85 @@ +/* + * nt_vdd.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 + +#define _NT_VDD + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * I/O Port services + */ + +typedef VOID (*PFNVDD_INB) (WORD iport, PBYTE data); +typedef VOID (*PFNVDD_INW) (WORD iport, PWORD data); +typedef VOID (*PFNVDD_INSB) (WORD iport, PBYTE data, WORD count); +typedef VOID (*PFNVDD_INSW) (WORD iport, PWORD data, WORD count); +typedef VOID (*PFNVDD_OUTB) (WORD iport, BYTE data); +typedef VOID (*PFNVDD_OUTW) (WORD iport, WORD data); +typedef VOID (*PFNVDD_OUTSB) (WORD iport, PBYTE data, WORD count); +typedef VOID (*PFNVDD_OUTSW) (WORD iport, PWORD data, WORD count); + +typedef struct _VDD_IO_HANDLERS +{ + PFNVDD_INB inb_handler; + PFNVDD_INW inw_handler; + PFNVDD_INSB insb_handler; + PFNVDD_INSW insw_handler; + PFNVDD_OUTB outb_handler; + PFNVDD_OUTW outw_handler; + PFNVDD_OUTSB outsb_handler; + PFNVDD_OUTSW outsw_handler; +} VDD_IO_HANDLERS, *PVDD_IO_HANDLERS; + +typedef struct _VDD_IO_PORTRANGE +{ + WORD First; + WORD Last; +} VDD_IO_PORTRANGE, *PVDD_IO_PORTRANGE; + +BOOL +WINAPI +VDDInstallIOHook +( + HANDLE hVdd, + WORD cPortRange, + PVDD_IO_PORTRANGE pPortRange, + PVDD_IO_HANDLERS IOhandler +); + +VOID +WINAPI +VDDDeInstallIOHook +( + HANDLE hVdd, + WORD cPortRange, + PVDD_IO_PORTRANGE pPortRange +); + +#ifdef __cplusplus +} +#endif + +/* EOF */ diff --git a/include/ddk/vddsvc.h b/include/ddk/vddsvc.h new file mode 100644 index 00000000000..be53553f952 --- /dev/null +++ b/include/ddk/vddsvc.h @@ -0,0 +1,31 @@ +/* + * 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 +#endif + + + +/* EOF */