Index: /trunk/src/VBox/Devices/Storage/DrvHostBase.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DrvHostBase.cpp	(revision 37779)
+++ /trunk/src/VBox/Devices/Storage/DrvHostBase.cpp	(revision 37780)
@@ -466,6 +466,37 @@
 static DECLCALLBACK(int) drvHostBaseUnmount(PPDMIMOUNT pInterface, bool fForce, bool fEject)
 {
-     LogFlow(("drvHostBaseUnmount: returns VERR_NOT_SUPPORTED\n"));
-     return VERR_NOT_SUPPORTED;
+    /* While we're not mountable (see drvHostBaseMount), we're unmountable. */
+    PDRVHOSTBASE pThis = PDMIMOUNT_2_DRVHOSTBASE(pInterface);
+    RTCritSectEnter(&pThis->CritSect);
+
+    /*
+     * Validate state.
+     */
+    int rc = VINF_SUCCESS;
+    if (!pThis->fLocked || fForce)
+    {
+        /* Unlock drive if necessary. */
+        if (pThis->fLocked)
+        {
+            if (pThis->pfnDoLock)
+                rc = pThis->pfnDoLock(pThis, false);
+            if (RT_SUCCESS(rc))
+                pThis->fLocked = false;
+        }
+
+        /*
+         * Media is no longer present.
+         */
+        DRVHostBaseMediaNotPresent(pThis);
+    }
+    else
+    {
+        Log(("drvHostiBaseUnmount: Locked\n"));
+        rc = VERR_PDM_MEDIA_LOCKED;
+    }
+
+    RTCritSectLeave(&pThis->CritSect);
+    LogFlow(("drvHostBaseUnmount: returns %Rrc\n", rc));
+    return rc;
 }
 
Index: /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 37779)
+++ /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 37780)
@@ -3512,5 +3512,5 @@
     }
 
-    if (!pMedium)
+    if (pMedium)
         return setError(E_FAIL,
                         tr("Could not mount the media/drive '%ls' (%Rrc)"),
