YG - loading & removing driver dynamically .. ?

Anybody who can remove (USB)driver from Device_Manager_Pannel(OS
suggested) instead of unload driver…?

I got a USB device which connected external power.
It always sppeared Device_Manager_Pannel after dis-connected its external
power (turn off power).

So I tried to remove its icon from Device_Manager_Pannel just like removed
from system. Is it possible via IRP_MN_REMOVE_DEVICE control …?

Additionally I wanna do that by application.

I invented IOCTL code then send it from application to driver.
Driver running follow flow after received IOCTL code from Application.

But driver still survive(working) … How can I do ?

Let me know remove driver instead of unload it.
Once again !!
It should be running dynamically at the case of external power attached
USB device.
Inversed driver have to removed at the case of disconnected external
power.
Help me~~

======================================================================
PIO_STACK_LOCATION ioStackLocation = IoGetCurrentIrpStackLocation(Irp);
PDEVICE_EXT devExt =(PDEVICE_EXT)DeviceObject->DeviceExtension;

DbgPrint(“>>Jumped 'Gun_RemoveDevice'\n”);
RtlInitUnicodeString(&linkName, L"\??\YGDriver");
IoDeleteSymbolicLink(&linkName);
IoDetachDevice(devExt->DeviceToSendIrpsTo);
IoDeleteDevice(devExt->DeviceObject);

#if DBG
devExt->DeviceToSendIrpsTo = NULL;
devExt = NULL;
#endif
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;
DbgPrint(“>>Escape 'Gun_RemoveDevice'\n”);
return(STATUS_SUCCESS);