Acabo de mirarlo a fondo y solo funciona en
windows 9x
Según dice la api de windows sobre el mensaje DEVICEARRIVAL y DEVICEREMOVECOMPLETED es que no son soportados en windows NT (al menos en delphi 6)
En windows 98 SE si funciona correctamente ese código.
Si te he hecho perder el tiempo, lo lamento
Un saludo