#include "ntvdm.h"
#include <debug.h>
#include "emulator.h"
#include "io.h"
Go to the source code of this file.
|
UCHAR | IOReadB (USHORT Port) |
|
VOID | IOReadStrB (USHORT Port, PUCHAR Buffer, ULONG Count) |
|
VOID | IOWriteB (USHORT Port, UCHAR Buffer) |
|
VOID | IOWriteStrB (USHORT Port, PUCHAR Buffer, ULONG Count) |
|
USHORT | IOReadW (USHORT Port) |
|
VOID | IOReadStrW (USHORT Port, PUSHORT Buffer, ULONG Count) |
|
VOID | IOWriteW (USHORT Port, USHORT Buffer) |
|
VOID | IOWriteStrW (USHORT Port, PUSHORT Buffer, ULONG Count) |
|
ULONG | IOReadD (USHORT Port) |
|
VOID | IOReadStrD (USHORT Port, PULONG Buffer, ULONG Count) |
|
VOID | IOWriteD (USHORT Port, ULONG Buffer) |
|
VOID | IOWriteStrD (USHORT Port, PULONG Buffer, ULONG Count) |
|
VOID | RegisterIoPort (USHORT Port, EMULATOR_INB_PROC InHandler, EMULATOR_OUTB_PROC OutHandler) |
|
VOID | UnregisterIoPort (USHORT Port) |
|
VOID FASTCALL | EmulatorReadIo (PFAST486_STATE State, USHORT Port, PVOID Buffer, ULONG DataCount, UCHAR DataSize) |
|
VOID FASTCALL | EmulatorWriteIo (PFAST486_STATE State, USHORT Port, PVOID Buffer, ULONG DataCount, UCHAR DataSize) |
|
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) |
|
◆ NDEBUG
Definition at line 14 of file io.c.
◆ EMULATOR_IO_HANDLERS
◆ EMULATOR_IOPORT_HANDLERS
◆ PEMULATOR_IO_HANDLERS
◆ PEMULATOR_IOPORT_HANDLERS
◆ EmulatorReadIo()
Definition at line 349 of file io.c.
357 if (
DataSize == 0 || DataCount == 0)
return;
391 Count = NewDataSize >> 2;
392 NewDataSize = NewDataSize & 3;
396 CurrentPort +=
sizeof(
ULONG);
401 Count = NewDataSize >> 1;
402 NewDataSize = NewDataSize & 1;
406 CurrentPort +=
sizeof(
USHORT);
416 CurrentPort +=
sizeof(
UCHAR);
#define UNREFERENCED_PARAMETER(P)
VOID IOReadStrB(USHORT Port, PUCHAR Buffer, ULONG Count)
VOID IOReadStrW(USHORT Port, PUSHORT Buffer, ULONG Count)
ULONG IOReadD(USHORT Port)
UCHAR IOReadB(USHORT Port)
USHORT IOReadW(USHORT Port)
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
VOID IOReadStrD(USHORT Port, PULONG Buffer, ULONG Count)
Referenced by CpuInitialize().
◆ EmulatorWriteIo()
Definition at line 424 of file io.c.
432 if (
DataSize == 0 || DataCount == 0)
return;
466 Count = NewDataSize >> 2;
467 NewDataSize = NewDataSize & 3;
471 CurrentPort +=
sizeof(
ULONG);
476 Count = NewDataSize >> 1;
477 NewDataSize = NewDataSize & 1;
481 CurrentPort +=
sizeof(
USHORT);
491 CurrentPort +=
sizeof(
UCHAR);
VOID IOWriteStrD(USHORT Port, PULONG Buffer, ULONG Count)
#define UNREFERENCED_PARAMETER(P)
VOID IOWriteW(USHORT Port, USHORT Buffer)
VOID IOWriteStrW(USHORT Port, PUSHORT Buffer, ULONG Count)
VOID IOWriteD(USHORT Port, ULONG Buffer)
VOID IOWriteB(USHORT Port, UCHAR Buffer)
VOID IOWriteStrB(USHORT Port, PUCHAR Buffer, ULONG Count)
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Referenced by CpuInitialize().
◆ IOReadB()
Definition at line 64 of file io.c.
82 DPRINT(
"Read from unknown port: 0x%X\n",
Port);
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
#define INVALID_HANDLE_VALUE
VDD_IO_HANDLERS VddIoHandlers
EMULATOR_IO_HANDLERS IoHandlers
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by Bios32Post(), BiosBootstrapLoader(), BiosHandleMasterPicIRQ(), BiosHandleSlavePicIRQ(), BiosKeyboardIrq(), BiosMiscService(), BiosTimeService(), DisableMouseInt(), DosMouseIrq(), EmulatorReadIo(), EnableMouseInt(), EraseMouseCursor(), InitializeBiosData(), IOReadStrB(), IOReadW(), PaintMouseCursor(), PicSetIRQMask(), ReadMouseData(), VbeInitialize(), VbeResetExtendedRegisters(), VbeService(), VbeSetExtendedRegisters(), VgaSetRegisters(), VgaSetSinglePaletteRegister(), VidBiosClearScreen(), VidBiosDrawGlyph(), VidBiosSyncCursorPosition(), and VidBiosVideoService().
◆ IOReadD()
Definition at line 252 of file io.c.
#define INVALID_HANDLE_VALUE
EMULATOR_IO_HANDLERS IoHandlers
USHORT IOReadW(USHORT Port)
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by EmulatorReadIo(), and IOReadStrD().
◆ IOReadStrB()
Definition at line 88 of file io.c.
#define INVALID_HANDLE_VALUE
VDD_IO_HANDLERS VddIoHandlers
UCHAR IOReadB(USHORT Port)
EMULATOR_IO_HANDLERS IoHandlers
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by EmulatorReadIo().
◆ IOReadStrD()
Definition at line 271 of file io.c.
#define INVALID_HANDLE_VALUE
ULONG IOReadD(USHORT Port)
EMULATOR_IO_HANDLERS IoHandlers
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by EmulatorReadIo().
◆ IOReadStrW()
Definition at line 183 of file io.c.
#define INVALID_HANDLE_VALUE
VDD_IO_HANDLERS VddIoHandlers
EMULATOR_IO_HANDLERS IoHandlers
USHORT IOReadW(USHORT Port)
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by EmulatorReadIo().
◆ IOReadW()
Definition at line 156 of file io.c.
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
#define INVALID_HANDLE_VALUE
VDD_IO_HANDLERS VddIoHandlers
UCHAR IOReadB(USHORT Port)
EMULATOR_IO_HANDLERS IoHandlers
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by EmulatorReadIo(), IOReadD(), and IOReadStrW().
◆ IOWriteB()
Definition at line 111 of file io.c.
128 DPRINT(
"Write to unknown port: 0x%X\n",
Port);
#define INVALID_HANDLE_VALUE
VDD_IO_HANDLERS VddIoHandlers
EMULATOR_IO_HANDLERS IoHandlers
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by Bios32Post(), BiosBootstrapLoader(), BiosHandleMasterPicIRQ(), BiosHandleSlavePicIRQ(), BiosHwSetup(), BiosMiscService(), BiosTimeService(), DisableMouseInt(), EmulatorWriteIo(), EnableMouseInt(), EraseMouseCursor(), InitializeBiosData(), IOWriteStrB(), IOWriteW(), MouseBios32Post(), PaintMouseCursor(), PicIRQComplete(), PicSetIRQMask(), SendMouseCommand(), VbeInitialize(), VbeResetExtendedRegisters(), VbeService(), VbeSetExtendedRegisters(), VgaSetPalette(), VgaSetRegisters(), VgaSetSinglePaletteRegister(), VidBiosClearScreen(), VidBiosDrawGlyph(), VidBiosSetCursorPosition(), VidBiosSetCursorShape(), VidBiosSetVideoMode(), VidBiosSetVideoPage(), VidBiosSyncCursorPosition(), and VidBiosVideoService().
◆ IOWriteD()
Definition at line 287 of file io.c.
#define INVALID_HANDLE_VALUE
VOID IOWriteW(USHORT Port, USHORT Buffer)
EMULATOR_IO_HANDLERS IoHandlers
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by EmulatorWriteIo(), and IOWriteStrD().
◆ IOWriteStrB()
Definition at line 133 of file io.c.
#define INVALID_HANDLE_VALUE
VDD_IO_HANDLERS VddIoHandlers
EMULATOR_OUTSB_PROC OutsB
EMULATOR_IO_HANDLERS IoHandlers
VOID IOWriteB(USHORT Port, UCHAR Buffer)
PFNVDD_OUTSB outsb_handler
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by EmulatorWriteIo().
◆ IOWriteStrD()
Definition at line 304 of file io.c.
#define INVALID_HANDLE_VALUE
VOID IOWriteD(USHORT Port, ULONG Buffer)
EMULATOR_IO_HANDLERS IoHandlers
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
EMULATOR_OUTSD_PROC OutsD
Referenced by EmulatorWriteIo().
◆ IOWriteStrW()
Definition at line 229 of file io.c.
#define INVALID_HANDLE_VALUE
PFNVDD_OUTSW outsw_handler
VDD_IO_HANDLERS VddIoHandlers
VOID IOWriteW(USHORT Port, USHORT Buffer)
EMULATOR_IO_HANDLERS IoHandlers
EMULATOR_OUTSW_PROC OutsW
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by EmulatorWriteIo().
◆ IOWriteW()
Definition at line 206 of file io.c.
#define INVALID_HANDLE_VALUE
VDD_IO_HANDLERS VddIoHandlers
EMULATOR_IO_HANDLERS IoHandlers
VOID IOWriteB(USHORT Port, UCHAR Buffer)
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
Referenced by EmulatorWriteIo(), IOWriteD(), and IOWriteStrW().
◆ RegisterIoPort()
◆ UnregisterIoPort()
Definition at line 338 of file io.c.
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
#define RtlZeroMemory(Destination, Length)
Referenced by VgaWritePort().
◆ VDDDeInstallIOHook()
Definition at line 565 of file io.c.
582 for (
i = pPortRange->First; i <= pPortRange->Last; ++
i)
589 DPRINT1(
"IoPortProc[0x%X] owned by somebody else\n",
i);
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
#define RtlZeroMemory(Destination, Length)
◆ VDDInstallIOHook()
Definition at line 502 of file io.c.
520 for (
i = pPortRange->First; i <= pPortRange->Last; ++
i)
528 DPRINT1(
"IoPortProc[0x%X] already registered\n",
i);
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
VDD_IO_HANDLERS VddIoHandlers
EMULATOR_OUTSB_PROC OutsB
EMULATOR_IO_HANDLERS IoHandlers
EMULATOR_OUTSW_PROC OutsW
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
EMULATOR_IOPORT_HANDLERS IoPortProc[EMULATOR_MAX_IOPORTS_NUM]
EMULATOR_OUTSD_PROC OutsD
◆ IoPortProc
Definition at line 59 of file io.c.
Referenced by IOReadB(), IOReadD(), IOReadStrB(), IOReadStrD(), IOReadStrW(), IOReadW(), IOWriteB(), IOWriteD(), IOWriteStrB(), IOWriteStrD(), IOWriteStrW(), IOWriteW(), RegisterIoPort(), UnregisterIoPort(), VDDDeInstallIOHook(), and VDDInstallIOHook().