121 lines
2.2 KiB
C
121 lines
2.2 KiB
C
|
/*++ BUILD Version: 0001 // Increment this if a change has global effects
|
|||
|
|
|||
|
Copyright (c) 1989 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
v86emul.h
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module contains the V86 instruction emulator interface definitions
|
|||
|
used by kernel device drivers.
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Andre Vachon (andreva) 8-Jan-1992
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
|
|||
|
*/
|
|||
|
|
|||
|
#ifndef _V86EMUL_
|
|||
|
#define _V86EMUL_
|
|||
|
|
|||
|
|
|||
|
// begin_ntminiport
|
|||
|
|
|||
|
|
|||
|
// Structures used by the kernel drivers to describe which ports must be
|
|||
|
// hooked out directly from the V86 emulator to the driver.
|
|||
|
|
|||
|
|
|||
|
typedef enum _EMULATOR_PORT_ACCESS_TYPE {
|
|||
|
Uchar,
|
|||
|
Ushort,
|
|||
|
Ulong
|
|||
|
} EMULATOR_PORT_ACCESS_TYPE, *PEMULATOR_PORT_ACCESS_TYPE;
|
|||
|
|
|||
|
|
|||
|
// Access Modes
|
|||
|
|
|||
|
|
|||
|
#define EMULATOR_READ_ACCESS 0x01
|
|||
|
#define EMULATOR_WRITE_ACCESS 0x02
|
|||
|
|
|||
|
typedef struct _EMULATOR_ACCESS_ENTRY {
|
|||
|
ULONG BasePort;
|
|||
|
ULONG NumConsecutivePorts;
|
|||
|
EMULATOR_PORT_ACCESS_TYPE AccessType;
|
|||
|
UCHAR AccessMode;
|
|||
|
UCHAR StringSupport;
|
|||
|
PVOID Routine;
|
|||
|
} EMULATOR_ACCESS_ENTRY, *PEMULATOR_ACCESS_ENTRY;
|
|||
|
|
|||
|
// end_ntminiport
|
|||
|
|
|||
|
|
|||
|
// These are the various function prototypes of the routines that are
|
|||
|
// provided by the kernel driver to hook out access to io ports.
|
|||
|
|
|||
|
|
|||
|
typedef
|
|||
|
NTSTATUS
|
|||
|
(*PDRIVER_IO_PORT_UCHAR ) (
|
|||
|
IN ULONG_PTR Context,
|
|||
|
IN ULONG Port,
|
|||
|
IN UCHAR AccessMode,
|
|||
|
IN OUT PUCHAR Data
|
|||
|
);
|
|||
|
|
|||
|
typedef
|
|||
|
NTSTATUS
|
|||
|
(*PDRIVER_IO_PORT_UCHAR_STRING ) (
|
|||
|
IN ULONG_PTR Context,
|
|||
|
IN ULONG Port,
|
|||
|
IN UCHAR AccessMode,
|
|||
|
IN OUT PUCHAR Data,
|
|||
|
IN ULONG DataLength
|
|||
|
);
|
|||
|
|
|||
|
typedef
|
|||
|
NTSTATUS
|
|||
|
(*PDRIVER_IO_PORT_USHORT ) (
|
|||
|
IN ULONG_PTR Context,
|
|||
|
IN ULONG Port,
|
|||
|
IN UCHAR AccessMode,
|
|||
|
IN OUT PUSHORT Data
|
|||
|
);
|
|||
|
|
|||
|
typedef
|
|||
|
NTSTATUS
|
|||
|
(*PDRIVER_IO_PORT_USHORT_STRING ) (
|
|||
|
IN ULONG_PTR Context,
|
|||
|
IN ULONG Port,
|
|||
|
IN UCHAR AccessMode,
|
|||
|
IN OUT PUSHORT Data,
|
|||
|
IN ULONG DataLength // number of words
|
|||
|
);
|
|||
|
|
|||
|
typedef
|
|||
|
NTSTATUS
|
|||
|
(*PDRIVER_IO_PORT_ULONG ) (
|
|||
|
IN ULONG_PTR Context,
|
|||
|
IN ULONG Port,
|
|||
|
IN UCHAR AccessMode,
|
|||
|
IN OUT PULONG Data
|
|||
|
);
|
|||
|
|
|||
|
typedef
|
|||
|
NTSTATUS
|
|||
|
(*PDRIVER_IO_PORT_ULONG_STRING ) (
|
|||
|
IN ULONG_PTR Context,
|
|||
|
IN ULONG Port,
|
|||
|
IN UCHAR AccessMode,
|
|||
|
IN OUT PULONG Data,
|
|||
|
IN ULONG DataLength // number of dwords
|
|||
|
);
|
|||
|
|
|||
|
#endif // _V86EMUL_
|