Hab es nun ganz einfach erstmal mit dem Auswerfen versucht.
Bei IOCTL_HID_DEACTIVATE_DEVICE auf das DeviceHandle "\\?\hid#vid_057e&pid...0030}" angewendet sagt mir DeviceIoControl was von OK/True, aber nichts passiert.
Ich weiß allerdings nicht wie ich was genau als In-Parameter an DeviceIoControl übergeben soll, aber egal was, es bleibt beim True und es hat dennoch keinerlei Auswirkungen (Control bleibt angemeldet und nutzbar).
Du öffnest aber das Gerät schon mit CreateFile?! ...
Du bist aber auch sicher, daß du bspw. erfolgreich ein
Handle bekommst? Wenn ja, dann versuch mal bitte
ZwDeviceIoControlFile (ntdll.dll, die Zw* und Nt* ist vom Usermode aus identisch) um den IOCTL zu senden. Da interessiert uns dann was der Treiber in IoStatusBlock einträgt. Speziell der Statuscode da drin wird uns interessieren. Die
Win32-Funktion
DeviceIoControl ist etwas ... nunja
... da genau diese Fehlerinfo verlorengeht. Meines Wissens nach ist der Rückgabewert von ZwDeviceIoControlFile normalerweise identisch mit dem in IoStatusBlock, aber es mag auch Unterschiede geben. Einerlei, DeviceIoControl verschluckt alle diese Informationen.