Changeset 79702 in vbox for trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-uri.cpp
- Timestamp:
- Jul 11, 2019 7:34:05 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 132047
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-uri.cpp
r79672 r79702 51 51 int VBoxSvcClipboardURISetListOpen(uint32_t cParms, VBOXHGCMSVCPARM paParms[], 52 52 PVBOXCLIPBOARDLISTOPENPARMS pOpenParms); 53 int VBoxSvcClipboardURISetListClose(uint32_t cParms, VBOXHGCMSVCPARM paParms[], 54 SHAREDCLIPBOARDLISTHANDLE hList); 53 55 54 56 … … 186 188 PVBOXCLIPBOARDLISTOPENPARMS pOpenParms, PSHAREDCLIPBOARDLISTHANDLE phList) 187 189 { 188 RT_NOREF(phList);189 190 190 LogFlowFuncEnter(); 191 191 … … 241 241 DECLCALLBACK(int) vboxSvcClipboardURIListClose(PSHAREDCLIPBOARDPROVIDERCTX pCtx, SHAREDCLIPBOARDLISTHANDLE hList) 242 242 { 243 RT_NOREF(pCtx, hList); 244 245 LogFlowFuncEnter(); 246 247 int rc = VINF_SUCCESS; 243 LogFlowFuncEnter(); 244 245 PVBOXCLIPBOARDCLIENT pClient = (PVBOXCLIPBOARDCLIENT)pCtx->pvUser; 246 AssertPtr(pClient); 247 248 int rc; 249 250 PVBOXCLIPBOARDCLIENTMSG pMsg = vboxSvcClipboardMsgAlloc(VBOX_SHARED_CLIPBOARD_HOST_MSG_URI_LIST_CLOSE, 251 VBOX_SHARED_CLIPBOARD_CPARMS_LIST_CLOSE); 252 if (pMsg) 253 { 254 rc = VBoxSvcClipboardURISetListClose(pMsg->m_cParms, pMsg->m_paParms, hList); 255 if (RT_SUCCESS(rc)) 256 { 257 rc = vboxSvcClipboardMsgAdd(pClient->pData, pMsg, true /* fAppend */); 258 if (RT_SUCCESS(rc)) 259 { 260 int rc2 = SharedClipboardURITransferEventRegister(pCtx->pTransfer, SHAREDCLIPBOARDURITRANSFEREVENTTYPE_LIST_CLOSE); 261 AssertRC(rc2); 262 263 vboxSvcClipboardClientWakeup(pClient); 264 } 265 } 266 } 267 else 268 rc = VERR_NO_MEMORY; 269 270 if (RT_SUCCESS(rc)) 271 { 272 PSHAREDCLIPBOARDURITRANSFERPAYLOAD pPayload; 273 rc = SharedClipboardURITransferEventWait(pCtx->pTransfer, SHAREDCLIPBOARDURITRANSFEREVENTTYPE_LIST_CLOSE, 274 30 * 1000 /* Timeout in ms */, &pPayload); 275 if (RT_SUCCESS(rc)) 276 SharedClipboardURITransferPayloadFree(pPayload); 277 } 248 278 249 279 LogFlowFuncLeaveRC(rc); … … 378 408 LogFlowFuncEnter(); 379 409 380 return VERR_NOT_IMPLEMENTED;381 }382 383 int vboxSvcClipboardURIObjClose(PSHAREDCLIPBOARDPROVIDERCTX pCtx, SHAREDCLIPBOARDOBJHANDLE hObj)384 {385 RT_NOREF(pCtx, hObj);386 387 LogFlowFuncEnter();388 389 410 int rc = VINF_SUCCESS; 390 411 … … 396 417 } 397 418 419 int vboxSvcClipboardURIObjClose(PSHAREDCLIPBOARDPROVIDERCTX pCtx, SHAREDCLIPBOARDOBJHANDLE hObj) 420 { 421 RT_NOREF(pCtx, hObj); 422 423 LogFlowFuncEnter(); 424 425 int rc = VINF_SUCCESS; 426 427 PVBOXCLIPBOARDCONTEXT pThisCtx = (PVBOXCLIPBOARDCONTEXT)pCtx->pvUser; 428 AssertPtr(pThisCtx); 429 430 LogFlowFuncLeaveRC(rc); 431 return rc; 432 } 433 398 434 int vboxSvcClipboardURIObjRead(PSHAREDCLIPBOARDPROVIDERCTX pCtx, SHAREDCLIPBOARDOBJHANDLE hObj, 399 435 void *pvData, uint32_t cbData, uint32_t fFlags, uint32_t *pcbRead) 400 436 { 401 RT_NOREF(pCtx, pCtx, hObj, pvData, cbData, fFlags, pcbRead); 402 403 LogFlowFuncEnter(); 404 405 return VERR_NOT_IMPLEMENTED; 437 RT_NOREF(pCtx, hObj, pvData, cbData, fFlags, pcbRead); 438 439 LogFlowFuncEnter(); 440 441 int rc = VINF_SUCCESS; 442 443 *pcbRead = cbData; 444 445 LogFlowFuncLeaveRC(rc); 446 return rc; 406 447 } 407 448 … … 454 495 LogRel(("Shared Clipboard: Transfer failed with %Rrc\n", rc)); 455 496 } 497 498 /********************************************************************************************************************************* 499 * HGCM getters / setters * 500 *********************************************************************************************************************************/ 456 501 457 502 /** … … 522 567 } 523 568 569 /** 570 * Gets the URI root entries from HGCM service parameters. 571 * 572 * @returns VBox status code. 573 * @param cParms Number of HGCM parameters supplied in \a paParms. 574 * @param paParms Array of HGCM parameters. 575 * @param pRoots Where to store the URI root entries on success. 576 */ 524 577 int VBoxSvcClipboardURIGetRoots(uint32_t cParms, VBOXHGCMSVCPARM paParms[], 525 578 PVBOXCLIPBOARDROOTS pRoots) … … 604 657 } 605 658 659 /** 660 * Sets an URI list open request to HGCM service parameters. 661 * 662 * @returns VBox status code. 663 * @param cParms Number of HGCM parameters supplied in \a paParms. 664 * @param paParms Array of HGCM parameters. 665 * @param pOpenParms List open parameters to set. 666 */ 606 667 int VBoxSvcClipboardURISetListOpen(uint32_t cParms, VBOXHGCMSVCPARM paParms[], 607 668 PVBOXCLIPBOARDLISTOPENPARMS pOpenParms) … … 618 679 HGCMSvcSetPv (&paParms[5], pOpenParms->pszPath, pOpenParms->cbPath); 619 680 HGCMSvcSetU64(&paParms[6], 0); /* OUT: uHandle */ 681 682 rc = VINF_SUCCESS; 683 } 684 else 685 rc = VERR_INVALID_PARAMETER; 686 687 LogFlowFuncLeaveRC(rc); 688 return rc; 689 } 690 691 /** 692 * Sets an URI list close request to HGCM service parameters. 693 * 694 * @returns VBox status code. 695 * @param cParms Number of HGCM parameters supplied in \a paParms. 696 * @param paParms Array of HGCM parameters. 697 * @param hList Handle of list to close. 698 */ 699 int VBoxSvcClipboardURISetListClose(uint32_t cParms, VBOXHGCMSVCPARM paParms[], 700 SHAREDCLIPBOARDLISTHANDLE hList) 701 { 702 int rc; 703 704 if (cParms == VBOX_SHARED_CLIPBOARD_CPARMS_LIST_CLOSE) 705 { 706 HGCMSvcSetU32(&paParms[0], 0 /* uContextID */); 707 HGCMSvcSetU64(&paParms[1], hList); 620 708 621 709 rc = VINF_SUCCESS; … … 809 897 } 810 898 899 /** 900 * Handles a guest reply (VBOX_SHARED_CLIPBOARD_GUEST_FN_REPLY) message. 901 * 902 * @returns VBox status code. 903 * @param pClient Pointer to associated client. 904 * @param pTransfer Pointer to transfer to handle guest reply for. 905 * @param cParms Number of function parameters supplied. 906 * @param paParms Array function parameters supplied. 907 */ 811 908 int VBoxSvcClipboardURITransferHandleReply(PVBOXCLIPBOARDCLIENT pClient, PSHAREDCLIPBOARDURITRANSFER pTransfer, 812 909 uint32_t cParms, VBOXHGCMSVCPARM paParms[]) … … 836 933 rc = SharedClipboardURITransferEventSignal(pTransfer, 837 934 SHAREDCLIPBOARDURITRANSFEREVENTTYPE_LIST_OPEN, pPayload); 935 break; 936 } 937 938 case VBOX_SHAREDCLIPBOARD_REPLYMSGTYPE_LIST_CLOSE: 939 { 940 rc = SharedClipboardURITransferEventSignal(pTransfer, 941 SHAREDCLIPBOARDURITRANSFEREVENTTYPE_LIST_CLOSE, pPayload); 942 break; 943 } 944 945 case VBOX_SHAREDCLIPBOARD_REPLYMSGTYPE_OBJ_OPEN: 946 { 947 rc = SharedClipboardURITransferEventSignal(pTransfer, 948 SHAREDCLIPBOARDURITRANSFEREVENTTYPE_OBJ_OPEN, pPayload); 949 break; 950 } 951 952 case VBOX_SHAREDCLIPBOARD_REPLYMSGTYPE_OBJ_CLOSE: 953 { 954 rc = SharedClipboardURITransferEventSignal(pTransfer, 955 SHAREDCLIPBOARDURITRANSFEREVENTTYPE_OBJ_CLOSE, pPayload); 838 956 break; 839 957 } … … 999 1117 if (enmDir == SHAREDCLIPBOARDURITRANSFERDIR_READ) 1000 1118 { 1001 creationCtx.Interface.pfnGetRoots = vboxSvcClipboardURIGetRoots;1002 creationCtx.Interface.pfnListHdrRead = vboxSvcClipboardURIListHdrRead;1003 creationCtx.Interface.pfnListEntryRead = vboxSvcClipboardURIListEntryRead;1004 creationCtx.Interface.pfnObjRead = vboxSvcClipboardURIObjRead;1119 creationCtx.Interface.pfnGetRoots = vboxSvcClipboardURIGetRoots; 1120 creationCtx.Interface.pfnListHdrRead = vboxSvcClipboardURIListHdrRead; 1121 creationCtx.Interface.pfnListEntryRead = vboxSvcClipboardURIListEntryRead; 1122 creationCtx.Interface.pfnObjRead = vboxSvcClipboardURIObjRead; 1005 1123 } 1006 1124 else
Note:
See TracChangeset
for help on using the changeset viewer.