I'm using a modified version of the VB.NET generic_hid code and I'm noticing that if the USB device is unplugged I receive a DBT_DEVICEREMOVECOMPLETE message and if the USB is plugged in I receive a DBT_DEVICEARRIVAL message. However if I unplug the USB device a second time I receive two DBT_DEVICEREMOVECOMPLETE messages and if I plug it in a second time I receive two DBT_DEVICEARRIVAL messages. What could be causing these duplicate messages to occur?