>    Direccion : System.Address := System'To_Address (16#378#);
  The LPT port is not at virtual memory address 378, it is at IO address
378.  On the PC you must use IO instructions to access an IO port, not
memory accessing instructions.

> I'm not sure if Ada can manage devices over the Windows Layer.
  Just as much, or as little, as C or anything else.  But you may need
to write a device driver to access protected resources.

As previously noted, however, Martin Carlisle has posted Ada code to
access the printer port under Windows, so you are in luck. :)