Index: /trunk/include/VBox/GuestHost/SharedClipboard.h
===================================================================
--- /trunk/include/VBox/GuestHost/SharedClipboard.h	(revision 82512)
+++ /trunk/include/VBox/GuestHost/SharedClipboard.h	(revision 82513)
@@ -94,4 +94,7 @@
 /**
  * Shared Clipboard formats specification.
+ * @todo r=bird: Pointless as we don't have any fFlags defined, so, unless
+ *       someone can give me a plausible scenario where we will need flags here,
+ *       this structure will be eliminated.
  */
 typedef struct SHCLFORMATDATA
Index: /trunk/include/VBox/HostServices/VBoxClipboardSvc.h
===================================================================
--- /trunk/include/VBox/HostServices/VBoxClipboardSvc.h	(revision 82512)
+++ /trunk/include/VBox/HostServices/VBoxClipboardSvc.h	(revision 82513)
@@ -282,6 +282,23 @@
 #define VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD       1
 /** Sends a list of available formats to the host.
- *  Formely known as VBOX_SHCL_GUEST_FN_REPORT_FORMATS. */
-#define VBOX_SHCL_GUEST_FN_FORMATS_REPORT         2
+ *
+ * This function takes a single parameter, a 32-bit set of formats
+ * (VBOX_SHCL_FMT_XXX), this can be zero if the clipboard is empty or previously
+ * reported formats are no longer avaible (logout, shutdown, whatever).
+ *
+ * There was a period during 6.1 development where it would take three
+ * parameters, a 64-bit context ID preceeded the formats and a 32-bit MBZ flags
+ * parameter was appended.  This is still accepted, though deprecated.
+ *
+ * @returns May return informational statuses indicating partial success, just
+ *          ignore it.
+ * @retval  VINF_SUCCESS on success.
+ * @retval  VERR_INVALID_CLIENT_ID
+ * @retval  VERR_WRONG_PARAMETER_COUNT
+ * @retval  VERR_WRONG_PARAMETER_TYPE
+ * @retval  VERR_NOT_SUPPORTED if all the formats are unsupported, host
+ *          clipboard will be empty.
+ */
+#define VBOX_SHCL_GUEST_FN_REPORT_FORMATS         2
 /** Reads data in specified format from the host.
  *
@@ -671,4 +688,16 @@
 #define VBOX_SHCL_CPARMS_CONNECT 3
 
+/** @name VBOX_SHCL_GUEST_FN_REPORT_FORMATS
+ * @{  */
+/** VBOX_SHCL_GUEST_FN_REPORT_FORMATS parameters. */
+typedef struct VBoxShClParmReportFormats
+{
+    /** uint32_t, int:  Zero or more VBOX_SHCL_FMT_XXX bits. */
+    HGCMFunctionParameter f32Formats;
+} VBoxShClParmReportFormats;
+
+#define VBOX_SHCL_CPARMS_REPORT_FORMATS     1   /**< The parameter count for VBOX_SHCL_GUEST_FN_REPORT_FORMATS. */
+#define VBOX_SHCL_CPARMS_REPORT_FORMATS_61B 3   /**< The 6.1 dev cycle variant, see VBOX_SHCL_GUEST_FN_REPORT_FORMATS. */
+/** @} */
 /**
  * Reports available formats.
@@ -732,5 +761,5 @@
 
 #define VBOX_SHCL_CPARMS_DATA_READ      3   /**< The parameter count for VBOX_SHCL_GUEST_FN_DATA_READ. */
-#define VBOX_SHCL_CPARMS_DATA_READ_61B  5   /**< The 6.1 dev cycle variant, see VBOX_SHCL_GUEST_FN_DATA_READ.  */
+#define VBOX_SHCL_CPARMS_DATA_READ_61B  5   /**< The 6.1 dev cycle variant, see VBOX_SHCL_GUEST_FN_DATA_READ. */
 /** @}  */
 
Index: /trunk/include/VBox/VBoxGuestLib.h
===================================================================
--- /trunk/include/VBox/VBoxGuestLib.h	(revision 82512)
+++ /trunk/include/VBox/VBoxGuestLib.h	(revision 82513)
@@ -678,6 +678,5 @@
 VBGLR3DECL(int)     VbglR3ClipboardWriteData(HGCMCLIENTID idClient, uint32_t fFormat, void *pv, uint32_t cb);
 VBGLR3DECL(int)     VbglR3ClipboardWriteDataEx(PVBGLR3SHCLCMDCTX pCtx, PSHCLDATABLOCK pData);
-VBGLR3DECL(int)     VbglR3ClipboardFormatsReportEx(PVBGLR3SHCLCMDCTX pCtx, PSHCLFORMATDATA pFormats);
-VBGLR3DECL(int)     VbglR3ClipboardFormatsReport(HGCMCLIENTID idClient, uint32_t fFormats);
+VBGLR3DECL(int)     VbglR3ClipboardReportFormats(HGCMCLIENTID idClient, uint32_t fFormats);
 
 VBGLR3DECL(int)     VbglR3ClipboardConnectEx(PVBGLR3SHCLCMDCTX pCtx);
Index: /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp	(revision 82512)
+++ /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp	(revision 82513)
@@ -256,6 +256,6 @@
                     if (RT_SUCCESS(rc))
                     {
-                        LogFunc(("WM_CLIPBOARDUPDATE: Reporting formats 0x%x\n", Formats.Formats));
-                        rc = VbglR3ClipboardFormatsReportEx(&pCtx->CmdCtx, &Formats);
+                        LogFunc(("WM_CLIPBOARDUPDATE: Reporting formats %#x\n", Formats.Formats));
+                        rc = VbglR3ClipboardReportFormats(pCtx->CmdCtx.uClientID, Formats.Formats);
                     }
                 }
@@ -301,9 +301,7 @@
                     SHCLFORMATDATA Formats;
                     rc = SharedClipboardWinGetFormats(pWinCtx, &Formats);
-                    if (RT_SUCCESS(rc)
+                    if (   RT_SUCCESS(rc)
                         && Formats.Formats != VBOX_SHCL_FMT_NONE)
-                    {
-                        rc = VbglR3ClipboardFormatsReportEx(&pCtx->CmdCtx, &Formats);
-                    }
+                        rc = VbglR3ClipboardReportFormats(pCtx->CmdCtx.uClientID, Formats.Formats);
                 }
                 else
Index: /trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibClipboard.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibClipboard.cpp	(revision 82512)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibClipboard.cpp	(revision 82513)
@@ -2315,44 +2315,4 @@
  * Reports (advertises) guest clipboard formats to the host.
  *
- * @returns VBox status code.
- * @param   pCtx                The command context returned by VbglR3ClipboardConnectEx().
- * @param   pFormats            The formats to report.
- */
-VBGLR3DECL(int) VbglR3ClipboardFormatsReportEx(PVBGLR3SHCLCMDCTX pCtx, PSHCLFORMATDATA pFormats)
-{
-    AssertPtrReturn(pCtx,     VERR_INVALID_POINTER);
-    AssertPtrReturn(pFormats, VERR_INVALID_POINTER);
-
-    VBoxShClFormatsMsg Msg;
-
-    int rc;
-
-    LogFlowFunc(("uFormats=0x%x\n", pFormats->Formats));
-
-    if (pCtx->fUseLegacyProtocol)
-    {
-        VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, VBOX_SHCL_GUEST_FN_FORMATS_REPORT, 1);
-        Msg.u.v0.uFormats.SetUInt32(pFormats->Formats);
-
-        rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg.hdr) + sizeof(Msg.u.v0));
-    }
-    else
-    {
-        VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, VBOX_SHCL_GUEST_FN_FORMATS_REPORT, 3);
-
-        Msg.u.v1.uContext.SetUInt64(pCtx->uContextID);
-        Msg.u.v1.uFormats.SetUInt32(pFormats->Formats);
-        Msg.u.v1.fFlags.SetUInt32(pFormats->fFlags);
-
-        rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg.hdr) + sizeof(Msg.u.v1));
-    }
-
-    LogFlowFuncLeaveRC(rc);
-    return rc;
-}
-
-/**
- * Reports (advertises) guest clipboard formats to the host.
- *
  * Legacy function, do not use anymore.
  *
@@ -2361,15 +2321,16 @@
  * @param   fFormats        The formats to report.
  */
-VBGLR3DECL(int) VbglR3ClipboardFormatsReport(HGCMCLIENTID idClient, uint32_t fFormats)
-{
-    AssertReturn(idClient, VERR_INVALID_PARAMETER);
-    AssertReturn(fFormats, VERR_INVALID_PARAMETER);
-
-    VBoxShClFormatsMsg Msg;
-
-    VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, VBOX_SHCL_GUEST_FN_FORMATS_REPORT, 1);
-    VbglHGCMParmUInt32Set(&Msg.u.v0.uFormats, fFormats);
-
-    int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg.hdr) + sizeof(Msg.u.v0));
+VBGLR3DECL(int) VbglR3ClipboardReportFormats(HGCMCLIENTID idClient, uint32_t fFormats)
+{
+    struct
+    {
+        VBGLIOCHGCMCALL             Hdr;
+        VBoxShClParmReportFormats   Parms;
+    } Msg;
+
+    VBGL_HGCM_HDR_INIT(&Msg.Hdr, idClient, VBOX_SHCL_GUEST_FN_REPORT_FORMATS, VBOX_SHCL_CPARMS_REPORT_FORMATS);
+    VbglHGCMParmUInt32Set(&Msg.Parms.f32Formats, fFormats);
+
+    int rc = VbglR3HGCMCall(&Msg.Hdr, sizeof(Msg));
 
     LogFlowFuncLeaveRC(rc);
Index: /trunk/src/VBox/Additions/x11/VBoxClient/clipboard.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/clipboard.cpp	(revision 82512)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/clipboard.cpp	(revision 82513)
@@ -175,19 +175,14 @@
  * Tell the host that new clipboard formats are available.
  *
- * @param pCtx                  Our context information.
- * @param Formats               The formats to report.
- */
-DECLCALLBACK(void) ShClX11ReportFormatsCallback(PSHCLCONTEXT pCtx, SHCLFORMATS Formats)
+ * @param   pCtx            Our context information.
+ * @param   fFormats        The formats to report.
+ */
+DECLCALLBACK(void) ShClX11ReportFormatsCallback(PSHCLCONTEXT pCtx, SHCLFORMATS fFormats)
 {
     RT_NOREF(pCtx);
 
-    LogFlowFunc(("Formats=0x%x\n", Formats));
-
-    SHCLFORMATDATA formatData;
-    RT_ZERO(formatData);
-
-    formatData.Formats = Formats;
-
-    int rc2 = VbglR3ClipboardFormatsReportEx(&pCtx->CmdCtx, &formatData);
+    LogFlowFunc(("Formats=0x%x\n", fFormats));
+
+    int rc2 = VbglR3ClipboardReportFormats(pCtx->CmdCtx.uClientID, fFormats);
     RT_NOREF(rc2);
     LogFlowFuncLeaveRC(rc2);
Index: /trunk/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp
===================================================================
--- /trunk/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp	(revision 82512)
+++ /trunk/src/VBox/GuestHost/SharedClipboard/clipboard-common.cpp	(revision 82513)
@@ -894,5 +894,5 @@
     {
         RT_CASE_RET_STR(VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD);
-        RT_CASE_RET_STR(VBOX_SHCL_GUEST_FN_FORMATS_REPORT);
+        RT_CASE_RET_STR(VBOX_SHCL_GUEST_FN_REPORT_FORMATS);
         RT_CASE_RET_STR(VBOX_SHCL_GUEST_FN_DATA_READ);
         RT_CASE_RET_STR(VBOX_SHCL_GUEST_FN_DATA_WRITE);
Index: /trunk/src/VBox/GuestHost/SharedClipboard/clipboard-win.cpp
===================================================================
--- /trunk/src/VBox/GuestHost/SharedClipboard/clipboard-win.cpp	(revision 82512)
+++ /trunk/src/VBox/GuestHost/SharedClipboard/clipboard-win.cpp	(revision 82513)
@@ -126,22 +126,13 @@
 int SharedClipboardWinClear(void)
 {
-    int rc;
-
     LogFlowFuncEnter();
-
-    const BOOL fRc = EmptyClipboard();
-    if (RT_UNLIKELY(!fRc))
-    {
-        const DWORD dwLastErr = GetLastError();
-        if (dwLastErr == ERROR_CLIPBOARD_NOT_OPEN)
-            rc = VERR_INVALID_STATE;
-        else
-            rc = RTErrConvertFromWin32(dwLastErr);
-
-        LogFunc(("Failed with %Rrc (0x%x)\n", rc, dwLastErr));
-    }
-    else
-        rc = VINF_SUCCESS;
-
+    if (EmptyClipboard())
+        return VINF_SUCCESS;
+
+    const DWORD dwLastErr = GetLastError();
+    AssertReturn(dwLastErr != ERROR_CLIPBOARD_NOT_OPEN, VERR_INVALID_STATE);
+
+    int rc = RTErrConvertFromWin32(dwLastErr);
+    LogFunc(("Failed with %Rrc (0x%x)\n", rc, dwLastErr));
     return rc;
 }
Index: /trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-win.cpp
===================================================================
--- /trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-win.cpp	(revision 82512)
+++ /trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-win.cpp	(revision 82513)
@@ -361,7 +361,4 @@
             LogFunc(("SHCL_WIN_WM_REPORT_FORMATS: fFormats=0x%x\n", fFormats));
 
-            if (fFormats == VBOX_SHCL_FMT_NONE) /* Could arrive with some older GA versions. */
-                break; /** @todo r=bird: Old code would do EmptyClipboard() here.  */
-
 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
             if (fFormats & VBOX_SHCL_FMT_URI_LIST)
Index: /trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc.cpp
===================================================================
--- /trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc.cpp	(revision 82512)
+++ /trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc.cpp	(revision 82513)
@@ -57,5 +57,5 @@
  * only supports a single simultaneous GET call from one client guest.
  *
- * The second guest message is VBOX_SHCL_GUEST_FN_FORMATS_REPORT, which tells
+ * The second guest message is VBOX_SHCL_GUEST_FN_REPORT_FORMATS, which tells
  * the host that the guest has new clipboard data available.  The third is
  * VBOX_SHCL_GUEST_FN_DATA_READ, which asks the host to send its clipboard data
@@ -1290,4 +1290,88 @@
 }
 
+
+/**
+ * Handles the VBOX_SHCL_GUEST_FN_REPORT_FORMATS message from the guest.
+ */
+static int shClSvcGuestReportFormats(PSHCLCLIENT pClient, uint32_t cParms, VBOXHGCMSVCPARM paParms[])
+{
+    /*
+     * Check if the service mode allows this operation and whether the guest is
+     * supposed to be reading from the host.
+     */
+    uint32_t uMode = ShClSvcGetMode();
+    if (   uMode == VBOX_SHCL_MODE_BIDIRECTIONAL
+        || uMode == VBOX_SHCL_MODE_GUEST_TO_HOST)
+    { /* likely */ }
+    else
+        return VERR_ACCESS_DENIED;
+
+    /*
+     * Digest parameters.
+     */
+    ASSERT_GUEST_RETURN(   cParms == VBOX_SHCL_CPARMS_REPORT_FORMATS
+                        || (   cParms == VBOX_SHCL_CPARMS_REPORT_FORMATS_61B
+                            && (pClient->State.fGuestFeatures0 & VBOX_SHCL_GF_0_CONTEXT_ID)),
+                        VERR_WRONG_PARAMETER_COUNT);
+
+    uintptr_t iParm = 0;
+    if (cParms == VBOX_SHCL_CPARMS_REPORT_FORMATS_61B)
+    {
+        ASSERT_GUEST_RETURN(paParms[iParm].type == VBOX_HGCM_SVC_PARM_64BIT, VERR_WRONG_PARAMETER_TYPE);
+        /* no defined value, so just ignore it */
+        iParm++;
+    }
+    ASSERT_GUEST_RETURN(paParms[iParm].type == VBOX_HGCM_SVC_PARM_32BIT, VERR_WRONG_PARAMETER_TYPE);
+    uint32_t const fFormats = paParms[iParm].u.uint32;
+    iParm++;
+    if (cParms == VBOX_SHCL_CPARMS_REPORT_FORMATS_61B)
+    {
+        ASSERT_GUEST_RETURN(paParms[iParm].type == VBOX_HGCM_SVC_PARM_32BIT, VERR_WRONG_PARAMETER_TYPE);
+        ASSERT_GUEST_RETURN(paParms[iParm].u.uint32 == 0, VERR_INVALID_FLAGS);
+        iParm++;
+    }
+    Assert(iParm == cParms);
+
+    /*
+     * Report the formats.
+     */
+    int rc = shClSvcSetSource(pClient, SHCLSOURCE_REMOTE);
+    if (RT_SUCCESS(rc))
+    {
+        if (g_ExtState.pfnExtension)
+        {
+            SHCLEXTPARMS parms;
+            RT_ZERO(parms);
+            parms.uFormat = fFormats;
+
+            g_ExtState.pfnExtension(g_ExtState.pvExtension, VBOX_CLIPBOARD_EXT_FN_FORMAT_ANNOUNCE, &parms, sizeof(parms));
+        }
+        else
+        {
+            SHCLCLIENTCMDCTX CmdCtx;
+            RT_ZERO(CmdCtx);
+
+            SHCLFORMATDATA FormatData;
+            FormatData.fFlags  = 0;
+            FormatData.Formats = fFormats;
+            rc = ShClSvcImplFormatAnnounce(pClient, &CmdCtx, &FormatData);
+        }
+
+        /** @todo r=bird: I'm not sure if the guest should be automatically allowed
+         *        to write the host clipboard now.  It would make more sense to disallow
+         *        host clipboard reads until the host reports formats.
+         *
+         *        The writes should only really be allowed upon request from the host,
+         *        shouldn't they? (Though, I'm not sure, maybe there are situations
+         *        where the guest side will just want to push the content over
+         *        immediately while it's still available, I don't quite recall now...
+         */
+        if (RT_SUCCESS(rc))
+            pClient->State.fFlags |= SHCLCLIENTSTATE_FLAGS_WRITE_ACTIVE;
+    }
+
+    return rc;
+}
+
 /**
  * Handles the VBOX_SHCL_GUEST_FN_DATA_READ message from the guest.
@@ -1749,8 +1833,6 @@
     {
         case VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD:
-        {
             rc = shClSvcMsgGetOld(pClient, callHandle, cParms, paParms);
             break;
-        }
 
         case VBOX_SHCL_GUEST_FN_CONNECT:
@@ -1777,131 +1859,30 @@
                 rc = VINF_SUCCESS;
             }
-
             break;
         }
 
         case VBOX_SHCL_GUEST_FN_REPORT_FEATURES:
-        {
             rc = shClSvcClientReportFeatures(pClient, callHandle, cParms, paParms);
             break;
-        }
 
         case VBOX_SHCL_GUEST_FN_QUERY_FEATURES:
-        {
             rc = shClSvcClientQueryFeatures(callHandle, cParms, paParms);
             break;
-        }
 
         case VBOX_SHCL_GUEST_FN_MSG_PEEK_NOWAIT:
-        {
             rc = shClSvcMsgPeek(pClient, callHandle, cParms, paParms, false /*fWait*/);
             break;
-        }
 
         case VBOX_SHCL_GUEST_FN_MSG_PEEK_WAIT:
-        {
             rc = shClSvcMsgPeek(pClient, callHandle, cParms, paParms, true /*fWait*/);
             break;
-        }
 
         case VBOX_SHCL_GUEST_FN_MSG_GET:
-        {
             rc = shClSvcMsgGet(pClient, callHandle, cParms, paParms);
             break;
-        }
-
-        case VBOX_SHCL_GUEST_FN_FORMATS_REPORT:
-        {
-            uint32_t uFormats = 0;
-
-            if (!(pClient->State.fGuestFeatures0 & VBOX_SHCL_GF_0_CONTEXT_ID)) /* Legacy, Guest Additions < 6.1. */
-            {
-                if (cParms != 1)
-                {
-                    rc = VERR_INVALID_PARAMETER;
-                }
-                else if (paParms[0].type != VBOX_HGCM_SVC_PARM_32BIT) /* uFormats */
-                {
-                    rc = VERR_INVALID_PARAMETER;
-                }
-                else
-                {
-                    rc = HGCMSvcGetU32(&paParms[0], &uFormats);
-                }
-            }
-            else
-            {
-                if (cParms != 3)
-                {
-                    rc = VERR_INVALID_PARAMETER;
-                }
-                else if (   paParms[0].type != VBOX_HGCM_SVC_PARM_64BIT  /* uContextID */
-                         || paParms[1].type != VBOX_HGCM_SVC_PARM_32BIT  /* uFormats */
-                         || paParms[2].type != VBOX_HGCM_SVC_PARM_32BIT) /* fFlags */
-                {
-                    rc = VERR_INVALID_PARAMETER;
-                }
-                else
-                {
-                    rc = HGCMSvcGetU32(&paParms[1], &uFormats);
-
-                    /** @todo Handle rest. */
-                }
-            }
-
-            if (RT_SUCCESS(rc))
-            {
-                if (   ShClSvcGetMode() != VBOX_SHCL_MODE_GUEST_TO_HOST
-                    && ShClSvcGetMode() != VBOX_SHCL_MODE_BIDIRECTIONAL)
-                {
-                    rc = VERR_ACCESS_DENIED;
-                }
-                else if (uFormats != VBOX_SHCL_FMT_NONE) /* Only announce formats if we actually *have* formats to announce! */
-                {
-                    rc = shClSvcSetSource(pClient, SHCLSOURCE_REMOTE);
-                    if (RT_SUCCESS(rc))
-                    {
-                        if (g_ExtState.pfnExtension)
-                        {
-                            SHCLEXTPARMS parms;
-                            RT_ZERO(parms);
-
-                            parms.uFormat = uFormats;
-
-                            g_ExtState.pfnExtension(g_ExtState.pvExtension, VBOX_CLIPBOARD_EXT_FN_FORMAT_ANNOUNCE,
-                                                    &parms, sizeof(parms));
-                        }
-                        else
-                        {
-
-                            SHCLCLIENTCMDCTX cmdCtx;
-                            RT_ZERO(cmdCtx);
-
-                            SHCLFORMATDATA formatData;
-                            RT_ZERO(formatData);
-
-                            formatData.Formats = uFormats;
-                            Assert(formatData.Formats != VBOX_SHCL_FMT_NONE); /* Sanity. */
-
-                            rc = ShClSvcImplFormatAnnounce(pClient, &cmdCtx, &formatData);
-                        }
-
-                        /** @todo r=bird: I'm not sure if the guest should be automatically allowed
-                         *        to write the host clipboard now.  It would make more sense to disallow
-                         *        host clipboard reads until the host reports formats.
-                         *
-                         *        The writes should only really be allowed upon request from the host,
-                         *        shouldn't they? (Though, I'm not sure, maybe there are situations
-                         *        where the guest side will just want to push the content over
-                         *        immediately while it's still available, I don't quite recall now...
-                         */
-                        if (RT_SUCCESS(rc))
-                            pClient->State.fFlags |= SHCLCLIENTSTATE_FLAGS_WRITE_ACTIVE;
-                    }
-                }
-            }
-
+
+        case VBOX_SHCL_GUEST_FN_REPORT_FORMATS:
+            rc = shClSvcGuestReportFormats(pClient, cParms, paParms);
             break;
-        }
 
         case VBOX_SHCL_GUEST_FN_DATA_READ:
