Class installer code works with Vista and Windows XP. Not Windows 7.
Call to SetupDiGetDeviceInstanceId fails (bad parameter) when invoked when processing DIF_DESTROYPRIVATEDATA (curious implementation, I did not write this). Attempting to trace with message boxes hangs the installer.
I experimented with a call to SetupDiGetDeviceInstanceId when processing DIF_NEWDEVICEWIZARD_FINISHINSTALL hangs the installation (consistant with message boxes). Forcing asserts does not invoke the debugger.