Int 31/AX=0303h

Prev Next Ralf Interrups Categories Contents

------

DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS

AX = 0303h
DS:(E)SI = selector:offset of procedure to call
ES:(E)DI = selector:offset of real mode call structure (see #03148)

Return:
CF clear if successful CX:DX = segment:offset of real mode call address (see #03149) CF set on error AX = error code (DPMI 1.0+) (8015h) (see #03143)

Notes: The real mode call structure is static, causing reentrancy problems; its contents are only valid at the time of a callback. The called procedure must modify the real mode CS:IP before returning. Values are returned to real mode by modifying the real mode call struc. DPMI hosts must provide at least 16 callbacks per client. The limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does not support this function

BUG: Windows NT 4.0 either ignores or clears the high 16 bits of EDI, causing an illegal instruction error if the real mode call structure's offset in ES is greater than 64K

See Also: AX=0304h - AX=0C00h

(Table 03149) Values DPMI real-mode callback procedure is called with:. DS:(E)SI = selector:offset of real mode SS:SP. ES:(E)DI = selector:offset of real mode call structure. SS:(E)SP = locked protected mode API stack. Interrupts disabled

Return:
(with IRET) ES:(E)DI = selector:offset of real mode call structure to restore

Category: DOS Extenders - Int 31h - D

------

Prev Next Ralf Interrups Categories Contents