Index: /trunk/src/VBox/HostDrivers/VBoxUSB/win/mon/VBoxUsbFlt.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxUSB/win/mon/VBoxUsbFlt.cpp	(revision 36998)
+++ /trunk/src/VBox/HostDrivers/VBoxUSB/win/mon/VBoxUsbFlt.cpp	(revision 36999)
@@ -518,6 +518,11 @@
         else
         {
-            /* the device is currently filtered, we should release it only if it is NOT grabbed by a one-shot filter */
-            if (!pDevice->pOwner || !pDevice->fIsFilterOneShot)
+            /* the device is currently filtered, we should release it only if
+             * 1. device does not have an owner
+             * or
+             * 2. it should be released bue to a one-shot filter
+             * or
+             * 3. it is NOT grabbed by a one-shot filter */
+            if (!pDevice->pOwner || fIsOneShot || !pDevice->fIsFilterOneShot)
             {
                 bNeedReplug = true;
@@ -556,6 +561,12 @@
         else
         {
-            /* the device is currently NOT filtered, we should replug it only if it is NOT grabbed by a one-shot filter */
-            if (!pDevice->pOwner || !pDevice->fIsFilterOneShot)
+            /* the device is currently NOT filtered,
+             * we should replug it only if
+             * 1. device does not have an owner
+             * or
+             * 2. it should be captured due to a one-shot filter
+             * or
+             * 3. it is NOT released by a one-shot filter */
+            if (!pDevice->pOwner || fIsOneShot || !pDevice->fIsFilterOneShot)
             {
                 bNeedReplug = true;
