Index: /trunk/src/VBox/Main/include/MediumFormatImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/MediumFormatImpl.h	(revision 37586)
+++ /trunk/src/VBox/Main/include/MediumFormatImpl.h	(revision 37587)
@@ -59,5 +59,5 @@
     struct Data
     {
-        Data() : capabilities(0) {}
+        Data() : capabilities((MediumFormatCapabilities_T)0) {}
 
         const Utf8Str        strId;
Index: /trunk/src/VBox/Main/src-server/MediumFormatImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MediumFormatImpl.cpp	(revision 37586)
+++ /trunk/src/VBox/Main/src-server/MediumFormatImpl.cpp	(revision 37587)
@@ -67,5 +67,5 @@
     unconst(m.strName) = aVDInfo->pszBackend;
     /* The capabilities of the backend. Assumes 1:1 mapping! */
-    unconst(m.capabilities) = aVDInfo->uBackendCaps;
+    unconst(m.capabilities) = (MediumFormatCapabilities_T)aVDInfo->uBackendCaps;
     /* Save the supported file extensions in a list */
     if (aVDInfo->paFileExtensions)
@@ -184,5 +184,5 @@
     unconst(m.llFileExtensions).clear();
     unconst(m.llDeviceTypes).clear();
-    unconst(m.capabilities) = 0;
+    unconst(m.capabilities) = (MediumFormatCapabilities_T)0;
     unconst(m.strName).setNull();
     unconst(m.strId).setNull();
@@ -230,8 +230,9 @@
     /// limit (or make the argument ULONG64 after checking that COM is capable
     /// of defining enums (used to represent bit flags) that contain 64-bit
-    /// values)
-    ComAssertRet(m.capabilities == ((ULONG)m.capabilities), E_FAIL);
-
-    *aCaps = (ULONG) m.capabilities;
+    /// values). Or go away from the enum/ulong hack for bit sets and use
+    /// a safearray like elsewhere.
+    ComAssertRet((uint64_t)m.capabilities == ((ULONG)m.capabilities), E_FAIL);
+
+    *aCaps = (ULONG)m.capabilities;
 
     return S_OK;
