The operating system sends the DBT_DEVICEQUERYREMOVE device message to request permission to remove a device. Any application can deny this request and cancel the removal.
To send the DBT_DEVICEQUERYREMOVE device message, the operating system sends the WM_DEVICECHANGE message with wParam set to DBT_DEVICEQUERYREMOVE and lParam set to the address of a DEV_BROADCAST_HDR structure identifying the device to remove.
dwData = (DWORD) lParam;
Return TRUE to grant permission to remove a device.
Return BROADCAST_QUERY_DENY to deny permission to remove a device.