Int 2F/AX=4A15h/BX=0000h

Prev Next Ralf Interrups Categories Contents

------

MS EMM386.EXE v4.46+ - INSTALL I/O VIRTUALIZATION HANDLER

AX = 4A15h
BX = 0000h (function number)
DX = starting I/O address
EDX high word = ending I/O address
CX = number of ports to trap
DS:SI -> I/O dispatch table (see #02815)
DI = size of client's code and data (size of DS segment which must be
made available to I/O dispatch function in protected mode)

Return:
CF clear if successful CF set on error

Notes: This interface is only available in virtual-86 mode; the I/O handlers will be called in protected mode. Only ports 0100h-FFFFh may be trapped; EMM386 reserved ports 0000h- 00FFh

Format of EMM386 I/O dispatch table [array]: Offset Size Description (Table 02815) 00h WORD I/O port number 02h WORD offset of I/O handler for port (see #02816)

(Table 02816) Values EMM386 I/O dispatch function is called with:. CX = Ring0 code selector for I/O handler's segment. DS = Ring0 data selector for I/O handler's segment (alias of CS). EDX = faulting I/O address. ECX = direction (00000008h for byte output, 00000000h for byte input) (reportedly 00h for byte/word input, 04h for byte/word output under DOS 6.22 EMM386). EAX = data in/out

Return:
(via FAR RET) CF clear if I/O access successfully virtualized CF set if access not virtualized (default handler will be called to perform the I/O)

BUG: 32-bit I/O on trapped ports hangs the DOS 6.22 EMM386

See Also: #02815

Category: Uncatagorized - Int 2Fh - M

------

Prev Next Ralf Interrups Categories Contents