4 * Windows NT Device Driver Kit
6 * This file is part of the ReactOS DDK package.
9 * Hermes Belusca-Maito (hermes.belusca@sfr.fr)
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
39 VDDTerminateVDM(VOID
);
45 (WINAPI
*PFNVDD_UCREATE
)(USHORT DosPDB
);
48 (WINAPI
*PFNVDD_UTERMINATE
)(USHORT DosPDB
);
51 (WINAPI
*PFNVDD_UBLOCK
)(VOID
);
54 (WINAPI
*PFNVDD_URESUME
)(VOID
);
56 // NOTE: Kept there for WinDDK compatibility, but it is in any case unused.
57 #ifndef NO_NTVDD_COMPAT
58 typedef struct _VDD_USER_HANDLERS
{
60 PFNVDD_UCREATE ucr_handler
;
61 PFNVDD_UTERMINATE uterm_handler
;
62 PFNVDD_UBLOCK ublock_handler
;
63 PFNVDD_URESUME uresume_handler
;
64 struct _VDD_USER_HANDLERS
* next
;
65 } VDD_USER_HANDLERS
, *PVDD_USER_HANDLERS
;
72 _In_ PFNVDD_UCREATE Ucr_Handler
,
73 _In_ PFNVDD_UTERMINATE Uterm_Handler
,
74 _In_ PFNVDD_UBLOCK Ublock_Handler
,
75 _In_ PFNVDD_URESUME Uresume_Handler
);
98 /* I/O Port services */
101 (WINAPI
*PFNVDD_INB
)(
106 (WINAPI
*PFNVDD_INW
)(
111 (WINAPI
*PFNVDD_INSB
)(
117 (WINAPI
*PFNVDD_INSW
)(
123 (WINAPI
*PFNVDD_OUTB
)(
128 (WINAPI
*PFNVDD_OUTW
)(
133 (WINAPI
*PFNVDD_OUTSB
)(
139 (WINAPI
*PFNVDD_OUTSW
)(
144 typedef struct _VDD_IO_HANDLERS
{
145 PFNVDD_INB inb_handler
;
146 PFNVDD_INW inw_handler
;
147 PFNVDD_INSB insb_handler
;
148 PFNVDD_INSW insw_handler
;
149 PFNVDD_OUTB outb_handler
;
150 PFNVDD_OUTW outw_handler
;
151 PFNVDD_OUTSB outsb_handler
;
152 PFNVDD_OUTSW outsw_handler
;
153 } VDD_IO_HANDLERS
, *PVDD_IO_HANDLERS
;
155 typedef struct _VDD_IO_PORTRANGE
{
158 } VDD_IO_PORTRANGE
, *PVDD_IO_PORTRANGE
;
164 _In_ WORD cPortRange
,
165 _In_ PVDD_IO_PORTRANGE pPortRange
,
166 _In_ PVDD_IO_HANDLERS IoHandlers
);
172 _In_ WORD cPortRange
,
173 _In_ PVDD_IO_PORTRANGE pPortRange
);
178 typedef struct _VDD_DMA_INFO
{
185 } VDD_DMA_INFO
, *PVDD_DMA_INFO
;
187 #define VDD_DMA_ADDR 0x01
188 #define VDD_DMA_COUNT 0x02
189 #define VDD_DMA_PAGE 0x04
190 #define VDD_DMA_STATUS 0x08
191 #define VDD_DMA_ALL (VDD_DMA_ADDR | VDD_DMA_COUNT | VDD_DMA_PAGE | VDD_DMA_STATUS)
198 _Inout_ PVOID Buffer
,
206 _In_ PVDD_DMA_INFO pDmaInfo
);
214 _In_ PVDD_DMA_INFO pDmaInfo
);
217 /* Memory services */
225 #define MSW_PE 0x0001
228 #define getMODE() ((getMSW() & MSW_PE) ? VDM_PM : VDM_V86)
231 (WINAPI
*PVDD_MEMORY_HANDLER
)(
244 #define VdmFlushCache(sel, off, len, mode) TRUE
245 #define VdmUnmapFlat(sel, off, buf, mode) TRUE
269 VDDInstallMemoryHook(
273 _In_ PVDD_MEMORY_HANDLER MemoryHandler
);
277 VDDDeInstallMemoryHook(