Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/HostServices/VBoxClipboardExt.h
r100615 r100616 50 50 #define VBOX_CLIPBOARD_EXT_FN_DATA_READ (2) 51 51 #define VBOX_CLIPBOARD_EXT_FN_DATA_WRITE (3) 52 #define VBOX_CLIPBOARD_EXT_FN_ERROR (4) 52 53 53 54 typedef DECLCALLBACKTYPE(int, FNSHCLEXTCALLBACK,(uint32_t u32Function, uint32_t u32Format, void *pvData, uint32_t cbData)); … … 79 80 pfnCallback; 80 81 } SetCallback; 82 /** Reports a clipboard error. */ 83 struct 84 { 85 /** Clipboard ID. Optional and can be NULL. */ 86 char *pszId; 87 /** User friendly error message. */ 88 char *pszMsg; 89 /** IPRT-style error code. */ 90 int rc; 91 } Error; 81 92 } u; 82 93 } SHCLEXTPARMS; -
trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-transfers.cpp
r100563 r100616 1511 1511 LogRel(("Shared Clipboard: Guest reported error %Rrc for transfer %RU32\n", 1512 1512 pReply->rc, pTransfer->State.uID)); 1513 1514 if (g_ExtState.pfnExtension) 1515 { 1516 SHCLEXTPARMS parms; 1517 RT_ZERO(parms); 1518 1519 parms.u.Error.rc = pReply->rc; 1520 parms.u.Error.pszMsg = RTStrAPrintf2("Guest reported error %Rrc for transfer %RU32", /** @todo Make the error messages more fine-grained based on rc. */ 1521 pReply->rc, pTransfer->State.uID); 1522 AssertPtrBreakStmt(parms.u.Error.pszMsg, rc = VERR_NO_MEMORY); 1523 1524 g_ExtState.pfnExtension(g_ExtState.pvExtension, VBOX_CLIPBOARD_EXT_FN_ERROR, &parms, sizeof(parms)); 1525 1526 RTStrFree(parms.u.Error.pszMsg); 1527 parms.u.Error.pszMsg = NULL; 1528 } 1529 1513 1530 RT_FALL_THROUGH(); 1514 1531 } 1532 1515 1533 default: 1516 1534 { -
trunk/src/VBox/Main/src-client/GuestShClPrivate.cpp
r100609 r100616 43 43 44 44 # include <VBox/GuestHost/SharedClipboard.h> 45 # ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 46 # include <VBox/GuestHost/SharedClipboard-transfers.h> 47 # endif 45 48 # include <VBox/HostServices/VBoxClipboardSvc.h> 49 # include <VBox/HostServices/VBoxClipboardExt.h> 46 50 # include <VBox/version.h> 47 51 … … 232 236 AssertPtrReturn(pThis, VERR_INVALID_POINTER); 233 237 238 PSHCLEXTPARMS pParms = (PSHCLEXTPARMS)pvParms; 239 /* pParms might be NULL, depending on the message. */ 240 234 241 int vrc = VINF_SUCCESS; 235 242 236 243 switch (u32Function) 237 244 { 238 # ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 239 case VBOX_SHCL_GUEST_FN_REPLY: 245 case VBOX_CLIPBOARD_EXT_FN_ERROR: 240 246 { 241 vrc = pThis->reportError( "foo", VERR_ADDRESS_CONFLICT, "bar");247 vrc = pThis->reportError(pParms->u.Error.pszId, pParms->u.Error.rc, pParms->u.Error.pszMsg); 242 248 break; 243 249 } 244 # endif245 case VBOX_SHCL_GUEST_FN_ERROR:246 vrc = pThis->reportError("foo", VERR_ADDRESS_CONFLICT, "bar");247 break;248 250 249 251 default: … … 251 253 } 252 254 253 PSHCLSVCEXT const pExt = &pThis->m_SvcExtVRDP; /* Currently we onlyhave one extension only. */255 PSHCLSVCEXT const pExt = &pThis->m_SvcExtVRDP; /* Currently we have one extension only. */ 254 256 255 257 if (pExt->pfnExt)
Note:
See TracChangeset
for help on using the changeset viewer.

