+++ /dev/null
-/*
- * 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
-
-/* VDM Control */
-
-VOID
-WINAPI
-VDDSimulate16(VOID);
-
-VOID
-WINAPI
-VDDTerminateVDM(VOID);
-
-
-/* VDD User Hooks */
-
-typedef VOID
-(WINAPI *PFNVDD_UCREATE)(USHORT DosPDB);
-
-typedef VOID
-(WINAPI *PFNVDD_UTERMINATE)(USHORT DosPDB);
-
-typedef VOID
-(WINAPI *PFNVDD_UBLOCK)(VOID);
-
-typedef VOID
-(WINAPI *PFNVDD_URESUME)(VOID);
-
-// NOTE: Kept there for WinDDK compatibility, but it is in any case unused.
-#ifndef NO_NTVDD_COMPAT
-typedef struct _VDD_USER_HANDLERS {
- HANDLE hvdd;
- PFNVDD_UCREATE ucr_handler;
- PFNVDD_UTERMINATE uterm_handler;
- PFNVDD_UBLOCK ublock_handler;
- PFNVDD_URESUME uresume_handler;
- struct _VDD_USER_HANDLERS* next;
-} VDD_USER_HANDLERS, *PVDD_USER_HANDLERS;
-#endif
-
-BOOL
-WINAPI
-VDDInstallUserHook(
- _In_ HANDLE hVdd,
- _In_ PFNVDD_UCREATE Ucr_Handler,
- _In_ PFNVDD_UTERMINATE Uterm_Handler,
- _In_ PFNVDD_UBLOCK Ublock_Handler,
- _In_ PFNVDD_URESUME Uresume_Handler);
-
-BOOL
-WINAPI
-VDDDeInstallUserHook(
- _In_ HANDLE hVdd);
-
-
-/* IRQ services */
-
-WORD
-WINAPI
-VDDReserveIrqLine(
- _In_ HANDLE hVdd,
- _In_ WORD IrqLine);
-
-BOOL
-WINAPI
-VDDReleaseIrqLine(
- _In_ HANDLE hVdd,
- _In_ WORD IrqLine);
-
-
-/* I/O Port services */
-
-typedef VOID
-(WINAPI *PFNVDD_INB)(
- WORD iport,
- PBYTE data);
-
-typedef VOID
-(WINAPI *PFNVDD_INW)(
- WORD iport,
- PWORD data);
-
-typedef VOID
-(WINAPI *PFNVDD_INSB)(
- WORD iport,
- PBYTE data,
- WORD count);
-
-typedef VOID
-(WINAPI *PFNVDD_INSW)(
- WORD iport,
- PWORD data,
- WORD count);
-
-typedef VOID
-(WINAPI *PFNVDD_OUTB)(
- WORD iport,
- BYTE data);
-
-typedef VOID
-(WINAPI *PFNVDD_OUTW)(
- WORD iport,
- WORD data);
-
-typedef VOID
-(WINAPI *PFNVDD_OUTSB)(
- WORD iport,
- PBYTE data,
- WORD count);
-
-typedef VOID
-(WINAPI *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(
- _In_ HANDLE hVdd,
- _In_ WORD cPortRange,
- _In_ PVDD_IO_PORTRANGE pPortRange,
- _In_ PVDD_IO_HANDLERS IoHandlers);
-
-VOID
-WINAPI
-VDDDeInstallIOHook(
- _In_ HANDLE hVdd,
- _In_ WORD cPortRange,
- _In_ PVDD_IO_PORTRANGE pPortRange);
-
-
-/* DMA services */
-
-typedef struct _VDD_DMA_INFO {
- WORD addr;
- WORD count;
- WORD page;
- BYTE status;
- BYTE mode;
- BYTE mask;
-} VDD_DMA_INFO, *PVDD_DMA_INFO;
-
-#define VDD_DMA_ADDR 0x01
-#define VDD_DMA_COUNT 0x02
-#define VDD_DMA_PAGE 0x04
-#define VDD_DMA_STATUS 0x08
-#define VDD_DMA_ALL (VDD_DMA_ADDR | VDD_DMA_COUNT | VDD_DMA_PAGE | VDD_DMA_STATUS)
-
-DWORD
-WINAPI
-VDDRequestDMA(
- _In_ HANDLE hVdd,
- _In_ WORD iChannel,
- _Inout_ PVOID Buffer,
- _In_ DWORD length);
-
-BOOL
-WINAPI
-VDDQueryDMA(
- _In_ HANDLE hVdd,
- _In_ WORD iChannel,
- _In_ PVDD_DMA_INFO pDmaInfo);
-
-BOOL
-WINAPI
-VDDSetDMA(
- _In_ HANDLE hVdd,
- _In_ WORD iChannel,
- _In_ WORD fDMA,
- _In_ PVDD_DMA_INFO pDmaInfo);
-
-
-/* Memory services */
-
-typedef enum {
- VDM_V86,
- VDM_PM
-} VDM_MODE;
-
-#ifndef MSW_PE
-#define MSW_PE 0x0001
-#endif
-
-#define getMODE() ((getMSW() & MSW_PE) ? VDM_PM : VDM_V86)
-
-typedef VOID
-(WINAPI *PVDD_MEMORY_HANDLER)(
- PVOID FaultAddress,
- ULONG RWMode);
-
-PVOID
-WINAPI
-VdmMapFlat(
- _In_ USHORT Segment,
- _In_ ULONG Offset,
- _In_ VDM_MODE Mode);
-
-#ifdef _X86_
-
-#define VdmFlushCache(sel, off, len, mode) TRUE
-#define VdmUnmapFlat(sel, off, buf, mode) TRUE
-
-#else
-
-BOOL
-WINAPI
-VdmFlushCache(
- _In_ USHORT Segment,
- _In_ ULONG Offset,
- _In_ ULONG Size,
- _In_ VDM_MODE Mode);
-
-BOOL
-WINAPI
-VdmUnmapFlat(
- _In_ USHORT Segment,
- _In_ ULONG Offset,
- _In_ PVOID Buffer,
- _In_ VDM_MODE Mode);
-
-#endif
-
-BOOL
-WINAPI
-VDDInstallMemoryHook(
- _In_ HANDLE hVdd,
- _In_ PVOID pStart,
- _In_ DWORD dwCount,
- _In_ PVDD_MEMORY_HANDLER MemoryHandler);
-
-BOOL
-WINAPI
-VDDDeInstallMemoryHook(
- _In_ HANDLE hVdd,
- _In_ PVOID pStart,
- _In_ DWORD dwCount);
-
-BOOL
-WINAPI
-VDDAllocMem(
- _In_ HANDLE hVdd,
- _In_ PVOID Address,
- _In_ ULONG Size);
-
-BOOL
-WINAPI
-VDDFreeMem(
- _In_ HANDLE hVdd,
- _In_ PVOID Address,
- _In_ ULONG Size);
-
-BOOL
-WINAPI
-VDDIncludeMem(
- _In_ HANDLE hVdd,
- _In_ PVOID Address,
- _In_ ULONG Size);
-
-BOOL
-WINAPI
-VDDExcludeMem(
- _In_ HANDLE hVdd,
- _In_ PVOID Address,
- _In_ ULONG Size);
-
-#ifdef __cplusplus
-}
-#endif
-
-/* EOF */