Changeset 80858 in vbox for trunk/src/VBox/Additions/WINNT
- Timestamp:
- Sep 17, 2019 1:03:39 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 133428
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp
r80849 r80858 62 62 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 63 63 /** Associated transfer data. */ 64 SHCL URICTX URI;64 SHCLTRANSFERCTX TransferCtx; 65 65 #endif 66 66 } SHCLCONTEXT, *PSHCLCONTEXT; 67 67 68 68 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 69 typedef struct _SHCL URIREADTHREADCTX69 typedef struct _SHCLREADTHREADCTX 70 70 { 71 71 PSHCLCONTEXT pClipboardCtx; 72 PSHCL URITRANSFER pTransfer;73 } SHCL URIREADTHREADCTX, *PSHCLURIREADTHREADCTX;74 75 typedef struct _SHCL URIWRITETHREADCTX72 PSHCLTRANSFER pTransfer; 73 } SHCLREADTHREADCTX, *PSHCLREADTHREADCTX; 74 75 typedef struct _SHCLWRITETHREADCTX 76 76 { 77 77 PSHCLCONTEXT pClipboardCtx; 78 PSHCL URITRANSFER pTransfer;79 } SHCL URIWRITETHREADCTX, *PSHCLURIWRITETHREADCTX;78 PSHCLTRANSFER pTransfer; 79 } SHCLWRITETHREADCTX, *PSHCLWRITETHREADCTX; 80 80 #endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS */ 81 81 … … 94 94 *********************************************************************************************************************************/ 95 95 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 96 static DECLCALLBACK(void) vboxClipboard URITransferCompleteCallback(PSHCLURITRANSFERCALLBACKDATA pData, int rc);97 static DECLCALLBACK(void) vboxClipboard URITransferErrorCallback(PSHCLURITRANSFERCALLBACKDATA pData, int rc);96 static DECLCALLBACK(void) vboxClipboardTransferTransferCompleteCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc); 97 static DECLCALLBACK(void) vboxClipboardTransferTransferErrorCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc); 98 98 #endif 99 99 … … 101 101 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 102 102 #if 0 103 static DECLCALLBACK(int) vboxClipboard URIWriteThread(RTTHREAD ThreadSelf, void *pvUser)103 static DECLCALLBACK(int) vboxClipboardTransferWriteThread(RTTHREAD ThreadSelf, void *pvUser) 104 104 { 105 105 RT_NOREF(ThreadSelf); … … 107 107 LogFlowFuncEnter(); 108 108 109 PSHCL URIWRITETHREADCTX pCtx = (PSHCLURIWRITETHREADCTX)pvUser;109 PSHCLWRITETHREADCTX pCtx = (PSHCLWRITETHREADCTX)pvUser; 110 110 AssertPtr(pCtx); 111 111 112 PSHCL URITRANSFER pTransfer = pCtx->pTransfer;112 PSHCLTRANSFER pTransfer = pCtx->pTransfer; 113 113 AssertPtr(pTransfer); 114 114 … … 121 121 if (RT_SUCCESS(rc)) 122 122 { 123 rc = VbglR3ClipboardTransferSendStatus(&cmdCtx, pTransfer, SHCL URITRANSFERSTATUS_RUNNING);123 rc = VbglR3ClipboardTransferSendStatus(&cmdCtx, pTransfer, SHCLTRANSFERSTATUS_RUNNING); 124 124 if (RT_SUCCESS(rc)) 125 125 { … … 160 160 #endif 161 161 162 static void vboxClipboard URITransferCallbackCleanup(PSHCLURITRANSFERCALLBACKDATA pData)163 { 164 PSHCL URICTX pCtx = (PSHCLURICTX)pData->pvUser;162 static void vboxClipboardTransferTransferCallbackCleanup(PSHCLTRANSFERCALLBACKDATA pData) 163 { 164 PSHCLTRANSFERCTX pCtx = (PSHCLTRANSFERCTX)pData->pvUser; 165 165 AssertPtr(pCtx); 166 166 167 PSHCL URITRANSFER pTransfer = pData->pTransfer;167 PSHCLTRANSFER pTransfer = pData->pTransfer; 168 168 AssertPtr(pTransfer); 169 169 170 if (pTransfer->pvUser) /* SharedClipboardWin URITransferCtx */170 if (pTransfer->pvUser) /* SharedClipboardWinTransferCtx */ 171 171 { 172 172 delete pTransfer->pvUser; … … 174 174 } 175 175 176 int rc2 = SharedClipboard URICtxTransferUnregister(pCtx, pTransfer->State.uID);176 int rc2 = SharedClipboardTransferCtxTransferUnregister(pCtx, pTransfer->State.uID); 177 177 AssertRC(rc2); 178 178 179 SharedClipboard URITransferDestroy(pTransfer);179 SharedClipboardTransferDestroy(pTransfer); 180 180 181 181 RTMemFree(pTransfer); … … 183 183 } 184 184 185 static DECLCALLBACK(void) vboxClipboard URITransferCompleteCallback(PSHCLURITRANSFERCALLBACKDATA pData, int rc)185 static DECLCALLBACK(void) vboxClipboardTransferTransferCompleteCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc) 186 186 { 187 187 RT_NOREF(rc); … … 191 191 LogRel2(("Shared Clipboard: Transfer to destination complete\n")); 192 192 193 vboxClipboard URITransferCallbackCleanup(pData);194 } 195 196 static DECLCALLBACK(void) vboxClipboard URITransferErrorCallback(PSHCLURITRANSFERCALLBACKDATA pData, int rc)193 vboxClipboardTransferTransferCallbackCleanup(pData); 194 } 195 196 static DECLCALLBACK(void) vboxClipboardTransferTransferErrorCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc) 197 197 { 198 198 RT_NOREF(rc); … … 202 202 LogRel(("Shared Clipboard: Transfer to destination failed with %Rrc\n", rc)); 203 203 204 vboxClipboard URITransferCallbackCleanup(pData);205 } 206 207 static int vboxClipboard URITransferOpen(PSHCLPROVIDERCTX pCtx)204 vboxClipboardTransferTransferCallbackCleanup(pData); 205 } 206 207 static int vboxClipboardTransferTransferOpen(PSHCLPROVIDERCTX pCtx) 208 208 { 209 209 RT_NOREF(pCtx); … … 213 213 } 214 214 215 static int vboxClipboard URITransferClose(PSHCLPROVIDERCTX pCtx)215 static int vboxClipboardTransferTransferClose(PSHCLPROVIDERCTX pCtx) 216 216 { 217 217 RT_NOREF(pCtx); … … 221 221 } 222 222 223 static int vboxClipboard URIListOpen(PSHCLPROVIDERCTX pCtx, PSHCLLISTOPENPARMS pOpenParms,224 PSHCLLISTHANDLE phList)223 static int vboxClipboardTransferListOpen(PSHCLPROVIDERCTX pCtx, PSHCLLISTOPENPARMS pOpenParms, 224 PSHCLLISTHANDLE phList) 225 225 { 226 226 RT_NOREF(pCtx, pOpenParms, phList); … … 239 239 } 240 240 241 static int vboxClipboard URIListClose(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList)241 static int vboxClipboardTransferListClose(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList) 242 242 { 243 243 RT_NOREF(pCtx, hList); … … 256 256 } 257 257 258 static int vboxClipboard URIGetRoots(PSHCLPROVIDERCTX pCtx, PSHCLROOTLIST *ppRootList)258 static int vboxClipboardTransferGetRoots(PSHCLPROVIDERCTX pCtx, PSHCLROOTLIST *ppRootList) 259 259 { 260 260 LogFlowFuncEnter(); … … 269 269 } 270 270 271 static int vboxClipboard URIListHdrRead(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList,272 PSHCLLISTHDR pListHdr)271 static int vboxClipboardTransferListHdrRead(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList, 272 PSHCLLISTHDR pListHdr) 273 273 { 274 274 RT_NOREF(hList); … … 281 281 RT_NOREF(pThisCtx); 282 282 283 int rc = SharedClipboard URIListHdrInit(pListHdr);283 int rc = SharedClipboardTransferListHdrInit(pListHdr); 284 284 if (RT_SUCCESS(rc)) 285 285 { … … 289 289 } 290 290 else 291 SharedClipboard URIListHdrDestroy(pListHdr);291 SharedClipboardTransferListHdrDestroy(pListHdr); 292 292 } 293 293 … … 297 297 298 298 /* 299 static int vboxClipboard URIListHdrWrite(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList,300 PSHCLLISTHDR pListHdr)299 static int vboxClipboardTransferListHdrWrite(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList, 300 PSHCLLISTHDR pListHdr) 301 301 { 302 302 LogFlowFuncEnter(); … … 311 311 }*/ 312 312 313 static int vboxClipboard URIListEntryRead(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList,314 PSHCLLISTENTRY pListEntry)313 static int vboxClipboardTransferListEntryRead(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList, 314 PSHCLLISTENTRY pListEntry) 315 315 { 316 316 RT_NOREF(hList); … … 331 331 332 332 /* 333 static int vboxClipboard URIListEntryWrite(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList,334 PSHCLLISTENTRY pListEntry)333 static int vboxClipboardTransferListEntryWrite(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList, 334 PSHCLLISTENTRY pListEntry) 335 335 { 336 336 LogFlowFuncEnter(); … … 346 346 */ 347 347 348 static int vboxClipboard URIObjOpen(PSHCLPROVIDERCTX pCtx,349 PSHCLOBJOPENCREATEPARMS pCreateParms, PSHCLOBJHANDLE phObj)348 static int vboxClipboardTransferObjOpen(PSHCLPROVIDERCTX pCtx, 349 PSHCLOBJOPENCREATEPARMS pCreateParms, PSHCLOBJHANDLE phObj) 350 350 { 351 351 LogFlowFuncEnter(); … … 360 360 } 361 361 362 static int vboxClipboard URIObjClose(PSHCLPROVIDERCTX pCtx, SHCLOBJHANDLE hObj)362 static int vboxClipboardTransferObjClose(PSHCLPROVIDERCTX pCtx, SHCLOBJHANDLE hObj) 363 363 { 364 364 LogFlowFuncEnter(); … … 373 373 } 374 374 375 static int vboxClipboard URIObjRead(PSHCLPROVIDERCTX pCtx, SHCLOBJHANDLE hObj,376 void *pvData, uint32_t cbData, uint32_t fFlags, uint32_t *pcbRead)375 static int vboxClipboardTransferObjRead(PSHCLPROVIDERCTX pCtx, SHCLOBJHANDLE hObj, 376 void *pvData, uint32_t cbData, uint32_t fFlags, uint32_t *pcbRead) 377 377 { 378 378 RT_NOREF(fFlags); … … 389 389 } 390 390 391 static int vboxClipboard URIObjWrite(PSHCLPROVIDERCTX pCtx, SHCLOBJHANDLE hObj,392 void *pvData, uint32_t cbData, uint32_t fFlags, uint32_t *pcbWritten)391 static int vboxClipboardTransferObjWrite(PSHCLPROVIDERCTX pCtx, SHCLOBJHANDLE hObj, 392 void *pvData, uint32_t cbData, uint32_t fFlags, uint32_t *pcbWritten) 393 393 { 394 394 RT_NOREF(fFlags); … … 660 660 LogFunc(("VBOX_SHCL_FMT_URI_LIST\n")); 661 661 662 PSHCL URITRANSFER pTransfer = SharedClipboardURICtxGetTransfer(&pCtx->URI, 0); /** @todo FIX !!! */662 PSHCLTRANSFER pTransfer = SharedClipboardTransferCtxGetTransfer(&pCtx->TransferCtx, 0); /** @todo FIX !!! */ 663 663 if (pTransfer) 664 664 { 665 rc = SharedClipboardWin URITransferCreate(pWinCtx, pTransfer);665 rc = SharedClipboardWinTransferCreate(pWinCtx, pTransfer); 666 666 667 667 /* Note: The actual requesting + retrieving of data will be done in the IDataObject implementation … … 671 671 AssertFailedStmt(rc = VERR_NOT_FOUND); 672 672 673 /* Note: SharedClipboardWin URITransferCreate() takes care of closing the clipboard. */673 /* Note: SharedClipboardWinTransferCreate() takes care of closing the clipboard. */ 674 674 } 675 675 else … … 773 773 else if (uFormat == VBOX_SHCL_FMT_URI_LIST) 774 774 { 775 LogFunc(("cTransfersRunning=%RU32\n", SharedClipboard URICtxGetRunningTransfers(&pCtx->URI)));775 LogFunc(("cTransfersRunning=%RU32\n", SharedClipboardTransferCtxGetRunningTransfers(&pCtx->TransferCtx))); 776 776 777 777 int rc = SharedClipboardWinOpen(hwnd); 778 778 if (RT_SUCCESS(rc)) 779 779 { 780 PSHCL URITRANSFER pTransfer;781 rc = SharedClipboard URITransferCreate(&pTransfer);780 PSHCLTRANSFER pTransfer; 781 rc = SharedClipboardTransferCreate(&pTransfer); 782 782 if (RT_SUCCESS(rc)) 783 rc = SharedClipboard URITransferInit(pTransfer, 0 /* uID */,784 SHCLURITRANSFERDIR_WRITE, SHCLSOURCE_LOCAL);783 rc = SharedClipboardTransferInit(pTransfer, 0 /* uID */, 784 SHCLTRANSFERDIR_WRITE, SHCLSOURCE_LOCAL); 785 785 if (RT_SUCCESS(rc)) 786 786 { … … 801 801 if (RT_SUCCESS(rc)) 802 802 { 803 rc = SharedClipboard URILTransferSetRoots(pTransfer,804 papszList, cbList + 1 /* Include termination */);803 rc = SharedClipboardTransferLTransferSetRoots(pTransfer, 804 papszList, cbList + 1 /* Include termination */); 805 805 if (RT_SUCCESS(rc)) 806 806 { 807 PSHCL URIWRITETHREADCTX pThreadCtx808 = (PSHCL URIWRITETHREADCTX)RTMemAllocZ(sizeof(SHCLURIWRITETHREADCTX));807 PSHCLWRITETHREADCTX pThreadCtx 808 = (PSHCLWRITETHREADCTX)RTMemAllocZ(sizeof(SHCLWRITETHREADCTX)); 809 809 if (pThreadCtx) 810 810 { … … 812 812 pThreadCtx->pTransfer = pTransfer; 813 813 814 rc = SharedClipboard URITransferPrepare(pTransfer);814 rc = SharedClipboardTransferPrepare(pTransfer); 815 815 if (RT_SUCCESS(rc)) 816 816 { 817 rc = SharedClipboard URICtxTransferRegister(&pCtx->URI, pTransfer,818 NULL /* puTransferID */);817 rc = SharedClipboardTransferCtxTransferRegister(&pCtx->TransferCtx, pTransfer, 818 NULL /* puTransferID */); 819 819 #if 0 820 820 if (RT_SUCCESS(rc)) 821 821 { 822 rc = SharedClipboard URITransferRun(pTransfer, vboxClipboardURIWriteThread,823 824 /* pThreadCtx now is owned by vboxClipboard URIWriteThread(). */822 rc = SharedClipboardTransferRun(pTransfer, vboxClipboardTransferWriteThread, 823 pThreadCtx /* pvUser */); 824 /* pThreadCtx now is owned by vboxClipboardTransferWriteThread(). */ 825 825 } 826 826 #endif … … 876 876 877 877 #if 0 878 /* The host wants to read URIdata. */878 /* The host wants to read transfer data. */ 879 879 case VBOX_CLIPBOARD_WM_URI_START_READ: 880 880 { 881 881 LogFunc(("VBOX_CLIPBOARD_WM_URI_START_READ: cTransfersRunning=%RU32\n", 882 SharedClipboard URICtxGetRunningTransfers(&pCtx->URI)));882 SharedClipboardTransferCtxGetRunningTransfers(&pCtx->URI))); 883 883 884 884 int rc = SharedClipboardWinOpen(hwnd); 885 885 if (RT_SUCCESS(rc)) 886 886 { 887 PSHCL URITRANSFER pTransfer;888 rc = SharedClipboard URITransferCreate(SHCLURITRANSFERDIR_WRITE,889 890 887 PSHCLTRANSFER pTransfer; 888 rc = SharedClipboardTransferCreate(SHCLTRANSFERDIR_WRITE, 889 SHCLSOURCE_LOCAL, 890 &pTransfer); 891 891 if (RT_SUCCESS(rc)) 892 892 { 893 rc = SharedClipboard URICtxTransferAdd(&pCtx->URI, pTransfer);893 rc = SharedClipboardTransferCtxTransferAdd(&pCtx->URI, pTransfer); 894 894 if (RT_SUCCESS(rc)) 895 895 { … … 910 910 if (RT_SUCCESS(rc)) 911 911 { 912 rc = SharedClipboard URILTransferSetRoots(pTransfer,913 papszList, cbList + 1 /* Include termination */);912 rc = SharedClipboardTransferLTransferSetRoots(pTransfer, 913 papszList, cbList + 1 /* Include termination */); 914 914 if (RT_SUCCESS(rc)) 915 915 { 916 PSHCL URIWRITETHREADCTX pThreadCtx917 = (PSHCL URIWRITETHREADCTX)RTMemAllocZ(sizeof(SHCLURIWRITETHREADCTX));916 PSHCLWRITETHREADCTX pThreadCtx 917 = (PSHCLWRITETHREADCTX)RTMemAllocZ(sizeof(SHCLWRITETHREADCTX)); 918 918 if (pThreadCtx) 919 919 { … … 921 921 pThreadCtx->pTransfer = pTransfer; 922 922 923 rc = SharedClipboard URITransferPrepare(pTransfer);923 rc = SharedClipboardTransferPrepare(pTransfer); 924 924 if (RT_SUCCESS(rc)) 925 925 { 926 rc = SharedClipboard URITransferRun(pTransfer, vboxClipboardURIWriteThread,927 928 /* pThreadCtx now is owned by vboxClipboard URIWriteThread(). */926 rc = SharedClipboardTransferRun(pTransfer, vboxClipboardTransferWriteThread, 927 pThreadCtx /* pvUser */); 928 /* pThreadCtx now is owned by vboxClipboardTransferWriteThread(). */ 929 929 } 930 930 } … … 953 953 } 954 954 955 /* The host wants to write URIdata. */955 /* The host wants to write transfer data. */ 956 956 case VBOX_CLIPBOARD_WM_URI_START_WRITE: 957 957 { 958 958 LogFunc(("VBOX_CLIPBOARD_WM_URI_START_WRITE: cTransfersRunning=%RU32\n", 959 SharedClipboard URICtxGetRunningTransfers(&pCtx->URI)));960 961 PSHCL URITRANSFER pTransfer;962 int rc = SharedClipboard URITransferCreate(SHCLURITRANSFERDIR_READ,963 964 959 SharedClipboardTransferCtxGetRunningTransfers(&pCtx->URI))); 960 961 PSHCLTRANSFER pTransfer; 962 int rc = SharedClipboardTransferCreate(SHCLTRANSFERDIR_READ, 963 SHCLSOURCE_LOCAL, 964 &pTransfer); 965 965 if (RT_SUCCESS(rc)) 966 966 { 967 SHCL URITRANSFERCALLBACKS TransferCallbacks;967 SHCLTRANSFERCALLBACKS TransferCallbacks; 968 968 RT_ZERO(TransferCallbacks); 969 969 970 970 TransferCallbacks.pvUser = &pCtx->URI; 971 TransferCallbacks.pfnTransferComplete = vboxClipboard URITransferCompleteCallback;972 TransferCallbacks.pfnTransferError = vboxClipboard URITransferErrorCallback;973 974 SharedClipboard URITransferSetCallbacks(pTransfer, &TransferCallbacks);971 TransferCallbacks.pfnTransferComplete = vboxClipboardTransferTransferCompleteCallback; 972 TransferCallbacks.pfnTransferError = vboxClipboardTransferTransferErrorCallback; 973 974 SharedClipboardTransferSetCallbacks(pTransfer, &TransferCallbacks); 975 975 976 976 SHCLPROVIDERCREATIONCTX creationCtx; … … 979 979 creationCtx.enmSource = SHCLSOURCE_REMOTE; 980 980 981 creationCtx.Interface.pfnGetRoots = vboxClipboard URIGetRoots;982 creationCtx.Interface.pfnListOpen = vboxClipboard URIListOpen;983 creationCtx.Interface.pfnListClose = vboxClipboard URIListClose;984 creationCtx.Interface.pfnListHdrRead = vboxClipboard URIListHdrRead;985 creationCtx.Interface.pfnListEntryRead = vboxClipboard URIListEntryRead;986 creationCtx.Interface.pfnObjOpen = vboxClipboard URIObjOpen;987 creationCtx.Interface.pfnObjClose = vboxClipboard URIObjClose;988 creationCtx.Interface.pfnObjRead = vboxClipboard URIObjRead;981 creationCtx.Interface.pfnGetRoots = vboxClipboardTransferGetRoots; 982 creationCtx.Interface.pfnListOpen = vboxClipboardTransferListOpen; 983 creationCtx.Interface.pfnListClose = vboxClipboardTransferListClose; 984 creationCtx.Interface.pfnListHdrRead = vboxClipboardTransferListHdrRead; 985 creationCtx.Interface.pfnListEntryRead = vboxClipboardTransferListEntryRead; 986 creationCtx.Interface.pfnObjOpen = vboxClipboardTransferObjOpen; 987 creationCtx.Interface.pfnObjClose = vboxClipboardTransferObjClose; 988 creationCtx.Interface.pfnObjRead = vboxClipboardTransferObjRead; 989 989 990 990 creationCtx.pvUser = pCtx; 991 991 992 rc = SharedClipboard URITransferSetInterface(pTransfer, &creationCtx);992 rc = SharedClipboardTransferSetInterface(pTransfer, &creationCtx); 993 993 if (RT_SUCCESS(rc)) 994 994 { 995 rc = SharedClipboard URICtxTransferAdd(&pCtx->URI, pTransfer);995 rc = SharedClipboardTransferCtxTransferAdd(&pCtx->URI, pTransfer); 996 996 if (RT_SUCCESS(rc)) 997 997 { 998 rc = SharedClipboard URITransferPrepare(pTransfer);998 rc = SharedClipboardTransferPrepare(pTransfer); 999 999 if (RT_SUCCESS(rc)) 1000 1000 { 1001 rc = SharedClipboardWin URITransferCreate(pWinCtx, pTransfer);1001 rc = SharedClipboardWinTransferCreate(pWinCtx, pTransfer); 1002 1002 } 1003 1003 } … … 1166 1166 { 1167 1167 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 1168 rc = SharedClipboard URICtxInit(&pCtx->URI);1168 rc = SharedClipboardTransferCtxInit(&pCtx->TransferCtx); 1169 1169 if (RT_SUCCESS(rc)) 1170 1170 #endif … … 1260 1260 { 1261 1261 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 1262 rc = VbglR3ClipboardEventGetNextEx(uMsg, cParms, &pCtx->CmdCtx, &pCtx-> URI, pEvent);1262 rc = VbglR3ClipboardEventGetNextEx(uMsg, cParms, &pCtx->CmdCtx, &pCtx->TransferCtx, pEvent); 1263 1263 #else 1264 1264 rc = VbglR3ClipboardEventGetNext(uMsg, cParms, &pCtx->CmdCtx, pEvent); … … 1372 1372 OleUninitialize(); 1373 1373 1374 SharedClipboard URICtxDestroy(&pCtx->URI);1374 SharedClipboardTransferCtxDestroy(&pCtx->TransferCtx); 1375 1375 #endif 1376 1376
Note:
See TracChangeset
for help on using the changeset viewer.