VirtualBox

Ignore:
Timestamp:
Aug 15, 2019 8:47:23 AM (5 years ago)
Author:
vboxsync
Message:

Shared Clipboard/URI: Update; more work on root list handling.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp

    r79702 r80283  
    5959    /** Pointer to the VBoxClient service environment. */
    6060    const VBOXSERVICEENV    *pEnv;
    61     /** Client ID the service is connected to the HGCM service with. */
    62     uint32_t                 u32ClientID;
     61    /** Command context. */
     62    VBGLR3SHCLCMDCTX         CmdCtx;
    6363    /** Windows-specific context data. */
    6464    VBOXCLIPBOARDWINCTX      Win;
     
    119119    RTThreadUserSignal(RTThreadSelf());
    120120
    121     uint32_t uClientID;
    122     int rc = VbglR3ClipboardConnect(&uClientID);
     121    VBGLR3SHCLCMDCTX cmdCtx;
     122    RT_ZERO(cmdCtx);
     123
     124    int rc = VbglR3ClipboardConnect(&cmdCtx.uClientID);
    123125    if (RT_SUCCESS(rc))
    124126    {
    125         rc = VbglR3ClipboardTransferSendStatus(uClientID, SHAREDCLIPBOARDURITRANSFERSTATUS_RUNNING);
     127        rc = VbglR3ClipboardTransferSendStatus(&cmdCtx, SHAREDCLIPBOARDURITRANSFERSTATUS_RUNNING);
    126128        if (RT_SUCCESS(rc))
    127129        {
     
    132134            {
    133135                PVBGLR3CLIPBOARDEVENT pEvent = NULL;
    134                 rc = VbglR3ClipboardEventGetNext(uClientID, pTransfer, &pEvent);
     136                rc = VbglR3ClipboardEventGetNext(&cmdCtx, pTransfer, &pEvent);
    135137                if (RT_SUCCESS(rc))
    136138                {
     
    152154        }
    153155
    154         VbglR3ClipboardDisconnect(uClientID);
     156        VbglR3ClipboardDisconnect(cmdCtx.uClientID);
    155157    }
    156158
     
    235237    AssertPtr(pThisCtx);
    236238
     239    RT_NOREF(pThisCtx);
     240
    237241    int rc = 0; // VbglR3ClipboardRecvListOpen(pThisCtx->u32ClientID, pListHdr, phList);
    238242
     
    251255    AssertPtr(pThisCtx);
    252256
    253     LogFlowFunc(("c=%RU32\n", pThisCtx->u32ClientID));
     257    RT_NOREF(pThisCtx);
    254258
    255259    int rc = SharedClipboardURIListHdrInit(pListHdr);
     
    293297    AssertPtr(pThisCtx);
    294298
     299    RT_NOREF(pThisCtx);
     300
    295301    RT_NOREF(pListEntry);
    296302    int rc = 0; // VbglR3ClipboardListEntryRead(pThisCtx->u32ClientID, pListEntry);
     
    316322*/
    317323
    318 static int vboxClipboardURIObjOpen(PSHAREDCLIPBOARDPROVIDERCTX pCtx, const char *pszPath,
    319                                    PVBOXCLIPBOARDCREATEPARMS pCreateParms, PSHAREDCLIPBOARDOBJHANDLE phObj)
     324static int vboxClipboardURIObjOpen(PSHAREDCLIPBOARDPROVIDERCTX pCtx,
     325                                   PVBOXCLIPBOARDOBJOPENCREATEPARMS pCreateParms, PSHAREDCLIPBOARDOBJHANDLE phObj)
    320326{
    321327    LogFlowFuncEnter();
     
    324330    AssertPtr(pThisCtx);
    325331
    326     int rc = VbglR3ClipboardObjOpen(pThisCtx->u32ClientID, pszPath, pCreateParms, phObj);
     332    int rc = VbglR3ClipboardObjOpenSend(&pThisCtx->CmdCtx, pCreateParms, phObj);
    327333
    328334    LogFlowFuncLeaveRC(rc);
     
    337343    AssertPtr(pThisCtx);
    338344
    339     int rc = VbglR3ClipboardObjClose(pThisCtx->u32ClientID, hObj);
     345    int rc = VbglR3ClipboardObjCloseSend(&pThisCtx->CmdCtx, hObj);
    340346
    341347    LogFlowFuncLeaveRC(rc);
     
    353359    AssertPtr(pThisCtx);
    354360
    355     int rc = VbglR3ClipboardObjRead(pThisCtx->u32ClientID, hObj, pvData, cbData, pcbRead);
     361    int rc = VbglR3ClipboardObjReadSend(&pThisCtx->CmdCtx, hObj, pvData, cbData, pcbRead);
    356362
    357363    LogFlowFuncLeaveRC(rc);
     
    369375    AssertPtr(pThisCtx);
    370376
    371     int rc = VbglR3ClipboardObjWrite(pThisCtx->u32ClientID, hObj, pvData, cbData, pcbWritten);
     377    int rc = VbglR3ClipboardObjWriteSend(&pThisCtx->CmdCtx, hObj, pvData, cbData, pcbWritten);
    372378
    373379    LogFlowFuncLeaveRC(rc);
     
    401407               {
    402408                   LogFunc(("WM_CLIPBOARDUPDATE: Reporting formats 0x%x\n", fFormats));
    403                    rc = VbglR3ClipboardReportFormats(pCtx->u32ClientID, fFormats);
     409                   rc = VbglR3ClipboardReportFormats(pCtx->CmdCtx.uClientID, fFormats);
    404410               }
    405411           }
     
    425431               int rc = VBoxClipboardWinGetFormats(pWinCtx, &fFormats);
    426432               if (RT_SUCCESS(rc))
    427                    rc = VbglR3ClipboardReportFormats(pCtx->u32ClientID, fFormats);
     433                   rc = VbglR3ClipboardReportFormats(pCtx->CmdCtx.uClientID, fFormats);
    428434           }
    429435
     
    478484                   {
    479485                       /* Read the host data to the preallocated buffer. */
    480                        int rc = VbglR3ClipboardReadData(pCtx->u32ClientID, fFormat, pMem, cbPrealloc, &cb);
     486                       int rc = VbglR3ClipboardReadData(pCtx->CmdCtx.uClientID, fFormat, pMem, cbPrealloc, &cb);
    481487                       LogFlowFunc(("VbglR3ClipboardReadData returned with rc = %Rrc\n",  rc));
    482488
     
    509515                                       /* Read the host data to the preallocated buffer. */
    510516                                       uint32_t cbNew = 0;
    511                                        rc = VbglR3ClipboardReadData(pCtx->u32ClientID, fFormat, pMem, cb, &cbNew);
     517                                       rc = VbglR3ClipboardReadData(pCtx->CmdCtx.uClientID, fFormat, pMem, cb, &cbNew);
    512518                                       LogFlowFunc(("VbglR3ClipboardReadData returned with rc = %Rrc, cb = %d, cbNew = %d\n",
    513519                                                    rc, cb, cbNew));
     
    698704                       if (lp != NULL)
    699705                       {
    700                            rc = VbglR3ClipboardWriteData(pCtx->u32ClientID, VBOX_SHARED_CLIPBOARD_FMT_BITMAP,
     706                           rc = VbglR3ClipboardWriteData(pCtx->CmdCtx.uClientID, VBOX_SHARED_CLIPBOARD_FMT_BITMAP,
    701707                                                         lp, GlobalSize(hClip));
    702708                           GlobalUnlock(hClip);
     
    716722                       if (uniString != NULL)
    717723                       {
    718                            rc = VbglR3ClipboardWriteData(pCtx->u32ClientID, VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT,
     724                           rc = VbglR3ClipboardWriteData(pCtx->CmdCtx.uClientID, VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT,
    719725                                                         uniString, (lstrlenW(uniString) + 1) * 2);
    720726                           GlobalUnlock(hClip);
     
    738744                           if (lp != NULL)
    739745                           {
    740                                rc = VbglR3ClipboardWriteData(pCtx->u32ClientID, VBOX_SHARED_CLIPBOARD_FMT_HTML,
     746                               rc = VbglR3ClipboardWriteData(pCtx->CmdCtx.uClientID, VBOX_SHARED_CLIPBOARD_FMT_HTML,
    741747                                                             lp, GlobalSize(hClip));
    742748                               GlobalUnlock(hClip);
     
    755761
    756762                   /* Requested clipboard format is not available, send empty data. */
    757                    VbglR3ClipboardWriteData(pCtx->u32ClientID, VBOX_SHARED_CLIPBOARD_FMT_NONE, NULL, 0);
     763                   VbglR3ClipboardWriteData(pCtx->CmdCtx.uClientID, VBOX_SHARED_CLIPBOARD_FMT_NONE, NULL, 0);
    758764#ifdef DEBUG_andy
    759765                   AssertFailed();
     
    10471053        /* ignore rc */ VBoxClipboardWinCheckAndInitNewAPI(&pCtx->Win.newAPI);
    10481054
    1049         rc = VbglR3ClipboardConnect(&pCtx->u32ClientID);
     1055        rc = VbglR3ClipboardConnect(&pCtx->CmdCtx.uClientID);
    10501056        if (RT_SUCCESS(rc))
    10511057        {
     1058            pCtx->CmdCtx.uProtocol = 0;
     1059
    10521060            rc = vboxClipboardCreateWindow(pCtx);
    10531061            if (RT_SUCCESS(rc))
     
    10611069            else
    10621070            {
    1063                 VbglR3ClipboardDisconnect(pCtx->u32ClientID);
     1071                VbglR3ClipboardDisconnect(pCtx->CmdCtx.uClientID);
    10641072            }
    10651073        }
     
    10951103        uint32_t u32Msg;
    10961104        uint32_t u32Formats;
    1097         rc = VbglR3ClipboardGetHostMsgOld(pCtx->u32ClientID, &u32Msg, &u32Formats);
     1105        rc = VbglR3ClipboardGetHostMsgOld(pCtx->CmdCtx.uClientID, &u32Msg, &u32Formats);
    10981106        if (RT_FAILURE(rc))
    10991107        {
     
    11851193    AssertPtr(pCtx);
    11861194
    1187     VbglR3ClipboardDisconnect(pCtx->u32ClientID);
    1188     pCtx->u32ClientID = 0;
     1195    VbglR3ClipboardDisconnect(pCtx->CmdCtx.uClientID);
     1196    pCtx->CmdCtx.uClientID = 0;
    11891197
    11901198    LogFlowFuncLeaveRC(VINF_SUCCESS);
     
    12001208
    12011209    /* Make sure that we are disconnected. */
    1202     Assert(pCtx->u32ClientID == 0);
     1210    Assert(pCtx->CmdCtx.uClientID == 0);
    12031211
    12041212    vboxClipboardDestroy(pCtx);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette