System32 Function 01 (01h) - Set Interrupt Vector

Description
This service lets applications hook interrupts. Even though the system is flexible enough to let applications modify the IDT themselves, it is advised that applications use this routine. This makes it possible for the V2_OS to unhook interrupts when an application unexpectedly crashes, or is being terminated for any other reason. It also makes it possible for other applications to see who hooked this interrupt. This could be usefull for determining if an 'updated service' should be installed or not.
Input

AL

01h

AH

Interrupt number to hook (00h-ffh)

BX

Code selector of the new interrupt handler

EDI

Offset of the new interrupt handler in the BX selector
Output

None

Always successful
Errorcodes

None

Always successful
Notes
*Selectors passed to this service should always reside in the GDT(Global Descriptor Table), not in a LDT(Local Descriptor Table). If BX is the CS of the application, the selector is always in the GDT.
*If an application chooses to hook an interrupt to an interrupthandler in a selector that has not (yet) been allocated, the service will let it. It is the applications task to make sure that the intterupt is not fired until the selector is allocated and the code is installed.
Development Status
Complete

Back