Virtual PC 2004 SP1 and the LPT port

With Virtual PC 2004 SP1 we made a change to the way we access the LPT (or parallel) port.  The reason for this is that we found a bug in Virtual PC 2004 which meant that we were not being guaranteed exclusive access to the LPT port for the virtual machine.  This meant that with Virtual PC 2004 it would be possible for the virtual machine to be talking to your printer – and for the host operating system to try and talk to the same printer at the same time.  Needless to say this is a big problem (which could lead to data loss, hardware problems, etc…).  So with Virtual PC 2004 SP1 we changed this behavior so that we actually are ensured of having exclusive access to the LPT port.

The problem is that by default Windows will grab control of the LPT port – if a printer is present – and it will not give up control.  There are – however – two ways that the user can make Windows give up control of the LPT port:

  1. Run ‘net stop spooler’ prior to launching the virtual machine.  Note that this will temporarily disable printing on the host operating system.  Once you are done with the virtual machine you can re-enable printing by running ‘net start spooler’.

  2. Run ‘sc config spooler start= disabled’ and reboot your physical computer.  This will permanently disable printing on the host operating system and ensure that Virtual PC can always access the LPT port.

Cheers,
Ben