> You can set your own manager functions in DriverEntry : > DriverObject->MajorFunction[IRP_MJ_CREATE] = YourOwn; > DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]] = YourOwn; > etc... > I did it a few times.. > That was the 'indecent hacking' I meant :) I don't know it PortCls relies on the handles it installs itself at this place. You even could 'intercept' the original PortCls function pointers and calll these when the IOCTL or PNP is not handled by your own code. But if surprise removal still works properly after this hacks..... Regards, Bart ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.de/