El problema es que en windows las "interrupciones" no son como en DOS. Las cosas se complican por que tienes corriendo varios programas a la vez, problemas de seguridad, etc. Generalmente el sistema operativo detectará los eventos generados por el hardware y enviará un "mensaje" a todas las aplicaciones que corresponda.
Por lo que estas cosas en windows se hacen respondiendo a mensajes.
En el siguiente ejemplo el procedimiento CMExit sólo será llamado si windows envia el mensaje "CM_MOUSELEAVE" dicho mensaje será enviado si el cursor del ratón abandona el componente notificado.
type
TCMExit = TWMNoParams;
...
procedure CMExit(var Message: TCMExit); message CM_MOUSELEAVE;
...
procedure CMExit(var Message: TCMExit);
begin
....
end;
Creo que buscar un OPEN SOURCE para manejo de puerto paralelo en windows te resolvería bastantes dudas y te permitiría modificarlo para suplir tus requerimientos.