00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
#ifndef _V86EMUL_
00024
#define _V86EMUL_
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 typedef enum _EMULATOR_PORT_ACCESS_TYPE {
00035
Uchar,
00036
Ushort,
00037
Ulong
00038 }
EMULATOR_PORT_ACCESS_TYPE, *
PEMULATOR_PORT_ACCESS_TYPE;
00039
00040
00041
00042
00043
00044 #define EMULATOR_READ_ACCESS 0x01
00045 #define EMULATOR_WRITE_ACCESS 0x02
00046
00047 typedef struct _EMULATOR_ACCESS_ENTRY {
00048 ULONG
BasePort;
00049 ULONG
NumConsecutivePorts;
00050 EMULATOR_PORT_ACCESS_TYPE AccessType;
00051 UCHAR
AccessMode;
00052 UCHAR
StringSupport;
00053 PVOID
Routine;
00054 }
EMULATOR_ACCESS_ENTRY, *
PEMULATOR_ACCESS_ENTRY;
00055
00056
00057
00058
00059
00060
00061
00062
00063
typedef
00064
NTSTATUS
00065 (*PDRIVER_IO_PORT_UCHAR ) (
00066 IN ULONG_PTR Context,
00067 IN ULONG Port,
00068 IN UCHAR AccessMode,
00069 IN OUT PUCHAR Data
00070 );
00071
00072
typedef
00073
NTSTATUS
00074 (*PDRIVER_IO_PORT_UCHAR_STRING ) (
00075 IN ULONG_PTR Context,
00076 IN ULONG Port,
00077 IN UCHAR AccessMode,
00078 IN OUT PUCHAR Data,
00079 IN ULONG DataLength
00080 );
00081
00082
typedef
00083
NTSTATUS
00084 (*PDRIVER_IO_PORT_USHORT ) (
00085 IN ULONG_PTR Context,
00086 IN ULONG Port,
00087 IN UCHAR AccessMode,
00088 IN OUT
PUSHORT Data
00089 );
00090
00091
typedef
00092
NTSTATUS
00093 (*PDRIVER_IO_PORT_USHORT_STRING ) (
00094 IN ULONG_PTR Context,
00095 IN ULONG Port,
00096 IN UCHAR AccessMode,
00097 IN OUT
PUSHORT Data,
00098 IN ULONG DataLength
00099 );
00100
00101
typedef
00102
NTSTATUS
00103 (*PDRIVER_IO_PORT_ULONG ) (
00104 IN ULONG_PTR Context,
00105 IN ULONG Port,
00106 IN UCHAR AccessMode,
00107 IN OUT PULONG Data
00108 );
00109
00110
typedef
00111
NTSTATUS
00112 (*PDRIVER_IO_PORT_ULONG_STRING ) (
00113 IN ULONG_PTR Context,
00114 IN ULONG Port,
00115 IN UCHAR AccessMode,
00116 IN OUT PULONG Data,
00117 IN ULONG DataLength
00118 );
00119
00120
#endif // _V86EMUL_