Index: /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 51629)
+++ /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 51630)
@@ -2696,5 +2696,5 @@
             Global::stringifyMachineState(mMachineState));
 
-    return mControl->AdoptSavedState(BSTR(aSavedStateFile.c_str()));
+    return mControl->AdoptSavedState(Bstr(aSavedStateFile.c_str()).raw());
 }
 
@@ -2828,5 +2828,5 @@
 
     /* Request the device capture */
-    return mControl->CaptureUSBDevice(BSTR(aId.toString().c_str()));
+    return mControl->CaptureUSBDevice(Bstr(aId.toString()).raw());
 
 #else   /* !VBOX_WITH_USB */
@@ -2867,5 +2867,5 @@
      */
     alock.release();
-    HRESULT rc = mControl->DetachUSBDevice(BSTR(aId.toString().c_str()), false /* aDone */);
+    HRESULT rc = mControl->DetachUSBDevice(Bstr(aId.toString()).raw(), false /* aDone */);
     if (FAILED(rc))
     {
@@ -2882,5 +2882,5 @@
         /* Request the device release. Even if it fails, the device will
          * remain as held by proxy, which is OK for us (the VM process). */
-        rc = mControl->DetachUSBDevice(BSTR(aId.toString().c_str()), true /* aDone */);
+        rc = mControl->DetachUSBDevice(Bstr(aId.toString()).raw(), true /* aDone */);
     }
     else
@@ -2949,5 +2949,5 @@
         rc = devsvec[i]->COMGETTER(Id)(id.asOutParam());
         if (FAILED(rc)) return rc;
-        if (id == BSTR(aId.toString().c_str()))
+        if (Utf8Str(id) == aId.toString())
         {
             ComObjPtr<OUSBDevice> pUSBDevice;
@@ -3235,5 +3235,5 @@
     ComObjPtr<IProgress> iProgress;
     MachineState_T machineState = MachineState_Null;
-    HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, BSTR(aId.toString().c_str()), BSTR(aId.toString().c_str()), FALSE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam());
+    HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, Bstr(aId.toString()).raw(), Bstr(aId.toString()).raw(), FALSE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam());
     if (FAILED(rc)) return rc;
     iProgress.queryInterfaceTo(aProgress.asOutParam());
@@ -3255,5 +3255,5 @@
     ComObjPtr<IProgress> iProgress;
     MachineState_T machineState = MachineState_Null;
-    HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, BSTR(aId.toString().c_str()), BSTR(aId.toString().c_str()), TRUE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam());
+    HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, Bstr(aId.toString()).raw(), Bstr(aId.toString()).raw(), TRUE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam());
     if (FAILED(rc)) return rc;
     iProgress.queryInterfaceTo(aProgress.asOutParam());
@@ -3274,5 +3274,5 @@
     ComObjPtr<IProgress> iProgress;
     MachineState_T machineState = MachineState_Null;
-    HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, BSTR(aStartId.toString().c_str()), BSTR(aEndId.toString().c_str()), FALSE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam());
+    HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, Bstr(aStartId.toString()).raw(), Bstr(aEndId.toString()).raw(), FALSE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam());
     if (FAILED(rc)) return rc;
     iProgress.queryInterfaceTo(aProgress.asOutParam());
