VirtualBox

Changeset 79630 in vbox for trunk/src/VBox/Additions/WINNT


Ignore:
Timestamp:
Jul 9, 2019 8:14:01 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
131932
Message:

Shared Clipboard/URI: Update.

File:
1 edited

Legend:

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

    r79506 r79630  
    7070
    7171#ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST
     72typedef struct _VBOXCLIPBOARDURIREADTHREADCTX
     73{
     74    PVBOXCLIPBOARDCONTEXT       pClipboardCtx;
     75    PSHAREDCLIPBOARDURITRANSFER pTransfer;
     76} VBOXCLIPBOARDURIREADTHREADCTX, *PVBOXCLIPBOARDURIREADTHREADCTX;
     77
    7278typedef struct _VBOXCLIPBOARDURIWRITETHREADCTX
    7379{
     
    108114    AssertPtr(pCtx);
    109115
     116    PSHAREDCLIPBOARDURITRANSFER pTransfer = pCtx->pTransfer;
     117    AssertPtr(pTransfer);
     118
     119    pTransfer->Thread.fStarted = true;
     120
    110121    RTThreadUserSignal(RTThreadSelf());
    111122
     
    114125    if (RT_SUCCESS(rc))
    115126    {
    116         VBoxClipboardTransferReport Msg;
    117         RT_ZERO(Msg);
    118 
    119         VBGL_HGCM_HDR_INIT(&Msg.hdr, uClientID,
    120                             VBOX_SHARED_CLIPBOARD_GUEST_FN_TRANSFER_REPORT, VBOX_SHARED_CLIPBOARD_CPARMS_TRANSFER_REPORT);
    121 
    122         Msg.uContext.SetUInt32(0);
    123         Msg.uStatus.SetUInt32(0);
    124 
    125         rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
    126 
     127        rc = VbglR3ClipboardTransferSendStatus(uClientID, SHAREDCLIPBOARDURITRANSFERSTATUS_RUNNING);
    127128        if (RT_SUCCESS(rc))
    128129        {
     
    132133            for (;;)
    133134            {
    134                 PVBGLR3CLIPBOARDEVENT pEvent;
    135                 rc = VbglR3ClipboardEventGetNext(uClientID, pCtx->pTransfer, &pEvent);
     135                PVBGLR3CLIPBOARDEVENT pEvent = NULL;
     136                rc = VbglR3ClipboardEventGetNext(uClientID, pTransfer, &pEvent);
    136137                if (RT_SUCCESS(rc))
    137138                {
    138                    switch (pEvent->enmType)
    139                    {
    140                        case VBGLR3CLIPBOARDEVENTTYPE_URI_LIST_HDR_READ:
    141                        {
    142                            LogFlowFunc(("VBGLR3CLIPBOARDEVENTTYPE_URI_READ_LIST_HDR\n"));
    143                            break;
    144                        }
    145 
    146                        case VBGLR3CLIPBOARDEVENTTYPE_URI_LIST_ENTRY_READ:
    147                        {
    148                            LogFlowFunc(("VBGLR3CLIPBOARDEVENTTYPE_URI_READ_LIST_ENTRY\n"));
    149                            break;
    150                        }
    151 
    152                        case VBGLR3CLIPBOARDEVENTTYPE_URI_OBJ_OPEN:
    153                        {
    154                            LogFlowFunc(("VBGLR3CLIPBOARDEVENTTYPE_URI_OBJ_OPEN\n"));
    155                            break;
    156                        }
    157 
    158                        case VBGLR3CLIPBOARDEVENTTYPE_URI_OBJ_CLOSE:
    159                        {
    160                            LogFlowFunc(("VBGLR3CLIPBOARDEVENTTYPE_URI_OBJ_CLOSE\n"));
    161                            break;
    162                        }
    163 
    164                        case VBGLR3CLIPBOARDEVENTTYPE_URI_OBJ_READ:
    165                        {
    166                            LogFlowFunc(("VBGLR3CLIPBOARDEVENTTYPE_URI_OBJ_READ\n"));
    167                            break;
    168                        }
    169 
    170                        case VBGLR3CLIPBOARDEVENTTYPE_URI_CANCEL:
    171                            RT_FALL_THROUGH();
    172                        case VBGLR3CLIPBOARDEVENTTYPE_URI_ERROR:
    173                            LogFlowFunc(("VBGLR3CLIPBOARDEVENTTYPE_URI_CANCEL / ERROR\n"));
    174                            fTerminate = true;
    175                            break;
    176 
    177                        default:
    178                            rc = VERR_NOT_SUPPORTED;
    179                            cErrors++;
    180                            break;
    181                    }
    182 
    183                    VbglR3ClipboardEventFree(pEvent);
     139                    /* Nothing to do in here right now. */
     140
     141                    VbglR3ClipboardEventFree(pEvent);
    184142                }
    185143
     
    272230}
    273231
    274 static int vboxClipboardURIListHdrRead(PSHAREDCLIPBOARDPROVIDERCTX pCtx, VBOXCLIPBOARDLISTHANDLE hList,
    275                                        PVBOXCLIPBOARDLISTHDR pListHdr)
    276 {
    277     RT_NOREF(hList);
     232static int vboxClipboardURIListOpen(PSHAREDCLIPBOARDPROVIDERCTX pCtx, PVBOXCLIPBOARDLISTHDR pListHdr,
     233                                    PSHAREDCLIPBOARDLISTHANDLE phList)
     234{
     235    RT_NOREF(pCtx, pListHdr, phList);
    278236
    279237    LogFlowFuncEnter();
     
    282240    AssertPtr(pThisCtx);
    283241
    284     LogFlowFunc(("c=%RU32\n", pThisCtx->u32ClientID));
    285 
    286     RT_NOREF(pListHdr);
    287     int rc = 0; //VbglR3ClipboardListHdrRead(pThisCtx->u32ClientID, pListHdr);
     242    int rc = 0; // VbglR3ClipboardRecvListOpen(pThisCtx->u32ClientID, pListHdr, phList);
    288243
    289244    LogFlowFuncLeaveRC(rc);
     
    291246}
    292247
    293 static int vboxClipboardURIListHdrWrite(PSHAREDCLIPBOARDPROVIDERCTX pCtx, VBOXCLIPBOARDLISTHANDLE hList,
    294                                         PVBOXCLIPBOARDLISTHDR pListHdr)
    295 {
     248static int vboxClipboardURIListHdrRead(PSHAREDCLIPBOARDPROVIDERCTX pCtx, SHAREDCLIPBOARDLISTHANDLE hList,
     249                                       PVBOXCLIPBOARDLISTHDR pListHdr)
     250{
     251    RT_NOREF(hList);
     252
    296253    LogFlowFuncEnter();
    297254
     
    299256    AssertPtr(pThisCtx);
    300257
    301     int rc = VbglR3ClipboardSendListHdrWrite(pThisCtx->u32ClientID, hList, pListHdr);
     258    LogFlowFunc(("c=%RU32\n", pThisCtx->u32ClientID));
     259
     260    int rc = SharedClipboardURIListHdrInit(pListHdr);
     261    if (RT_SUCCESS(rc))
     262    {
     263        if (RT_SUCCESS(rc))
     264        {
     265            //rc = VbglR3ClipboardListHdrReadRecv(pThisCtx->u32ClientID, hList, pListHdr);
     266        }
     267        else
     268            SharedClipboardURIListHdrDestroy(pListHdr);
     269    }
    302270
    303271    LogFlowFuncLeaveRC(rc);
     
    305273}
    306274
    307 static int vboxClipboardURIListEntryRead(PSHAREDCLIPBOARDPROVIDERCTX pCtx, VBOXCLIPBOARDLISTHANDLE hList,
    308                                          PVBOXCLIPBOARDLISTENTRY pListEntry)
    309 {
    310     RT_NOREF(hList);
    311 
     275/*
     276static int vboxClipboardURIListHdrWrite(PSHAREDCLIPBOARDPROVIDERCTX pCtx, SHAREDCLIPBOARDLISTHANDLE hList,
     277                                        PVBOXCLIPBOARDLISTHDR pListHdr)
     278{
    312279    LogFlowFuncEnter();
    313280
     
    315282    AssertPtr(pThisCtx);
    316283
     284    int rc = VbglR3ClipboardListHdrWrite(pThisCtx->u32ClientID, hList, pListHdr);
     285
     286    LogFlowFuncLeaveRC(rc);
     287    return rc;
     288}*/
     289
     290static int vboxClipboardURIListEntryRead(PSHAREDCLIPBOARDPROVIDERCTX pCtx, SHAREDCLIPBOARDLISTHANDLE hList,
     291                                         PVBOXCLIPBOARDLISTENTRY pListEntry)
     292{
     293    RT_NOREF(hList);
     294
     295    LogFlowFuncEnter();
     296
     297    PVBOXCLIPBOARDCONTEXT pThisCtx = (PVBOXCLIPBOARDCONTEXT)pCtx->pvUser;
     298    AssertPtr(pThisCtx);
     299
    317300    RT_NOREF(pListEntry);
    318301    int rc = 0; // VbglR3ClipboardListEntryRead(pThisCtx->u32ClientID, pListEntry);
     
    322305}
    323306
    324 static int vboxClipboardURIListEntryWrite(PSHAREDCLIPBOARDPROVIDERCTX pCtx, VBOXCLIPBOARDLISTHANDLE hList,
     307/*
     308static int vboxClipboardURIListEntryWrite(PSHAREDCLIPBOARDPROVIDERCTX pCtx, SHAREDCLIPBOARDLISTHANDLE hList,
    325309                                          PVBOXCLIPBOARDLISTENTRY pListEntry)
    326310{
     
    330314    AssertPtr(pThisCtx);
    331315
    332     int rc = VbglR3ClipboardSendListEntryWrite(pThisCtx->u32ClientID, hList, pListEntry);
     316    int rc = VbglR3ClipboardListEntryWrite(pThisCtx->u32ClientID, hList, pListEntry);
    333317
    334318    LogFlowFuncLeaveRC(rc);
    335319    return rc;
    336320}
     321*/
    337322
    338323static int vboxClipboardURIObjOpen(PSHAREDCLIPBOARDPROVIDERCTX pCtx, const char *pszPath,
     
    636621                   VBoxClipboardWinClear();
    637622
    638 #ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST
     623#if 0
    639624                   if (fFormats & VBOX_SHARED_CLIPBOARD_FMT_URI_LIST)
    640625                   {
     
    671656                           creationCtx.pvUser = pCtx;
    672657
    673                            rc = SharedClipboardURITransferProviderCreate(pTransfer, &creationCtx);
     658                           rc = SharedClipboardURITransferSetInterface(pTransfer, &creationCtx);
    674659                           if (RT_SUCCESS(rc))
    675660                           {
     
    690675
    691676                       VBoxClipboardWinClose();
    692 #ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST
     677#if 0
    693678                   }
    694679#endif
     
    802787               if (RT_SUCCESS(rc))
    803788               {
     789            #if 0
    804790                   SHAREDCLIPBOARDURITRANSFERCALLBACKS TransferCallbacks;
    805791                   RT_ZERO(TransferCallbacks);
     
    824810                   creationCtx.pvUser = pCtx;
    825811
    826                    rc = SharedClipboardURITransferProviderCreate(pTransfer, &creationCtx);
     812                   rc = SharedClipboardURITransferSetInterface(pTransfer, &creationCtx);
    827813                   if (RT_SUCCESS(rc))
    828814                   {
     815            #endif
    829816                       rc = SharedClipboardURICtxTransferAdd(&pCtx->URI, pTransfer);
    830817                       if (RT_SUCCESS(rc))
     
    880867                           }
    881868                       }
    882                    }
     869                   //}
    883870               }
    884871
     
    891878       }
    892879
     880       /* The host wants to write URI data. */
    893881       case VBOX_CLIPBOARD_WM_URI_START_WRITE:
    894882       {
    895883           LogFunc(("VBOX_CLIPBOARD_WM_URI_START_WRITE: cTransfersRunning=%RU32\n",
    896884                    SharedClipboardURICtxGetRunningTransfers(&pCtx->URI)));
     885
     886           PSHAREDCLIPBOARDURITRANSFER pTransfer;
     887           int rc = SharedClipboardURITransferCreate(SHAREDCLIPBOARDURITRANSFERDIR_READ,
     888                                                     SHAREDCLIPBOARDSOURCE_LOCAL,
     889                                                     &pTransfer);
     890           if (RT_SUCCESS(rc))
     891           {
     892               SHAREDCLIPBOARDURITRANSFERCALLBACKS TransferCallbacks;
     893               RT_ZERO(TransferCallbacks);
     894
     895               TransferCallbacks.pvUser              = &pCtx->URI;
     896               TransferCallbacks.pfnTransferComplete = vboxClipboardURITransferCompleteCallback;
     897               TransferCallbacks.pfnTransferError    = vboxClipboardURITransferErrorCallback;
     898
     899               SharedClipboardURITransferSetCallbacks(pTransfer, &TransferCallbacks);
     900
     901               SHAREDCLIPBOARDPROVIDERCREATIONCTX creationCtx;
     902               RT_ZERO(creationCtx);
     903               creationCtx.enmSource = SHAREDCLIPBOARDSOURCE_REMOTE;
     904
     905               RT_ZERO(creationCtx.Interface);
     906               creationCtx.Interface.pfnListHdrRead   = vboxClipboardURIListHdrRead;
     907               creationCtx.Interface.pfnListEntryRead = vboxClipboardURIListEntryRead;
     908               creationCtx.Interface.pfnObjOpen       = vboxClipboardURIObjOpen;
     909               creationCtx.Interface.pfnObjClose      = vboxClipboardURIObjClose;
     910               creationCtx.Interface.pfnObjRead       = vboxClipboardURIObjRead;
     911
     912               creationCtx.pvUser = pCtx;
     913
     914               rc = SharedClipboardURITransferSetInterface(pTransfer, &creationCtx);
     915               if (RT_SUCCESS(rc))
     916               {
     917                   rc = SharedClipboardURICtxTransferAdd(&pCtx->URI, pTransfer);
     918                   if (RT_SUCCESS(rc))
     919                   {
     920                       if (RT_SUCCESS(rc))
     921                       {
     922                           rc = SharedClipboardURITransferPrepare(pTransfer);
     923                           if (RT_SUCCESS(rc))
     924                           {
     925                               rc = VBoxClipboardWinURITransferCreate(pWinCtx, pTransfer);
     926                           }
     927                       }
     928                   }
     929               }
     930           }
    897931
    898932           break;
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