|
|
/*++ 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 begin_ntosp
//
// 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
);
// end_ntosp
#endif // _V86EMUL_
|