Changeset 78974 in vbox for trunk/include/VBox
- Timestamp:
- Jun 4, 2019 4:51:48 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 131100
- Location:
- trunk/include/VBox/GuestHost
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/GuestHost/SharedClipboard-uri.h
r78950 r78974 34 34 #include <iprt/critsect.h> 35 35 #include <iprt/fs.h> 36 #include <iprt/list.h> 36 37 37 38 #include <iprt/cpp/list.h> … … 452 453 public: /* Interface to be implemented. */ 453 454 454 virtual int ReadMetaData(uint32_t fFlags = 0) = 0; 455 virtual int WriteMetaData(const void *pvBuf, size_t cbBuf, size_t *pcbWritten, uint32_t fFlags = 0) = 0; 456 457 int ReadDirectory(PVBOXCLIPBOARDDIRDATA pDirData); 458 int WriteDirectory(const PVBOXCLIPBOARDDIRDATA pDirData); 459 460 int ReadFileHdr(PVBOXCLIPBOARDFILEHDR pFileHdr); 461 int WriteFileHdr(const PVBOXCLIPBOARDFILEHDR pFileHdr); 462 int ReadFileData(PVBOXCLIPBOARDFILEDATA pFileData); 463 int WriteFileData(const PVBOXCLIPBOARDFILEDATA pFileData); 464 465 virtual void Reset(void) = 0; 466 467 public: 468 469 const SharedClipboardURIList &GetURIList(void) { return m_URIList; } 455 virtual int ReadMetaData(uint32_t fFlags = 0); 456 virtual int WriteMetaData(const void *pvBuf, size_t cbBuf, size_t *pcbWritten, uint32_t fFlags = 0); 457 458 virtual int ReadDirectory(PVBOXCLIPBOARDDIRDATA pDirData); 459 virtual int ReadDirectoryObj(SharedClipboardURIObject &Obj); 460 461 virtual int WriteDirectory(const PVBOXCLIPBOARDDIRDATA pDirData); 462 virtual int WriteDirectoryObj(const SharedClipboardURIObject &Obj); 463 464 virtual int ReadFileHdr(PVBOXCLIPBOARDFILEHDR pFileHdr); 465 virtual int ReadFileHdrObj(SharedClipboardURIObject &Obj); 466 467 virtual int WriteFileHdr(const PVBOXCLIPBOARDFILEHDR pFileHdr); 468 virtual int WriteFileHdrObj(const SharedClipboardURIObject &Obj); 469 470 virtual int ReadFileData(PVBOXCLIPBOARDFILEDATA pFileData, uint32_t *pcbRead); 471 virtual int ReadFileDataObj(SharedClipboardURIObject &Obj, uint32_t *pcbRead); 472 473 virtual int WriteFileData(const PVBOXCLIPBOARDFILEDATA pFileData, uint32_t *pcbWritten); 474 virtual int WriteFileDataObj(const SharedClipboardURIObject &Obj, uint32_t *pcbWritten); 475 476 virtual void Reset(void); 477 478 public: 479 480 SharedClipboardURIList &GetURIList(void) { return m_URIList; } 470 481 const SharedClipboardURIObject *GetURIObjectCurrent(void) { return m_URIList.First(); } 471 482 … … 503 514 int ReadFileHdr(PVBOXCLIPBOARDFILEHDR pFileHdr); 504 515 int WriteFileHdr(const PVBOXCLIPBOARDFILEHDR pFileHdr); 505 int ReadFileData(PVBOXCLIPBOARDFILEDATA pFileData );506 int WriteFileData(const PVBOXCLIPBOARDFILEDATA pFileData );516 int ReadFileData(PVBOXCLIPBOARDFILEDATA pFileData, uint32_t *pcbRead); 517 int WriteFileData(const PVBOXCLIPBOARDFILEDATA pFileData, uint32_t *pcbWritten); 507 518 508 519 void Reset(void); … … 527 538 virtual ~SharedClipboardProviderHostService(void); 528 539 529 public:530 531 int ReadMetaData(uint32_t fFlags = 0);532 int WriteMetaData(const void *pvBuf, size_t cbBuf, size_t *pcbWritten, uint32_t fFlags = 0);533 534 int ReadDirectory(PVBOXCLIPBOARDDIRDATA pDirData);535 int WriteDirectory(const PVBOXCLIPBOARDDIRDATA pDirData);536 537 int ReadFileHdr(PVBOXCLIPBOARDFILEHDR pFileHdr);538 int WriteFileHdr(const PVBOXCLIPBOARDFILEHDR pFileHdr);539 int ReadFileData(PVBOXCLIPBOARDFILEDATA pFileData);540 int WriteFileData(const PVBOXCLIPBOARDFILEDATA pFileData);541 542 void Reset(void);543 544 540 protected: 545 541 … … 547 543 }; 548 544 545 typedef DECLCALLBACK(int) FNSHAREDCLIPBOARDURITRANSFERSTARTED(void *pvUser); 546 /** Pointer to a FNSHAREDCLIPBOARDURITRANSFERSTARTED function. */ 547 typedef FNSHAREDCLIPBOARDURITRANSFERSTARTED *PFNSHAREDCLIPBOARDURITRANSFERSTARTED; 548 549 typedef DECLCALLBACK(int) FNSHAREDCLIPBOARDURITRANSFERCANCELED(void *pvUser); 550 /** Pointer to a FNSHAREDCLIPBOARDURITRANSFERCANCELED function. */ 551 typedef FNSHAREDCLIPBOARDURITRANSFERCANCELED *PFNSHAREDCLIPBOARDURITRANSFERCANCELED; 552 553 typedef DECLCALLBACK(int) FNSHAREDCLIPBOARDURITRANSFERCOMPLETE(void *pvUser, int rc); 554 /** Pointer to a FNSHAREDCLIPBOARDURITRANSFERCOMPLETE function. */ 555 typedef FNSHAREDCLIPBOARDURITRANSFERCOMPLETE *PFNSHAREDCLIPBOARDURITRANSFERCOMPLETE; 556 557 typedef DECLCALLBACK(int) FNSHAREDCLIPBOARDURITRANSFERERROR(void *pvUser, int rc); 558 /** Pointer to a FNSHAREDCLIPBOARDURITRANSFERERROR function. */ 559 typedef FNSHAREDCLIPBOARDURITRANSFERERROR *PFNSHAREDCLIPBOARDURITRANSFERERROR; 560 561 /** 562 * Structure acting as a function callback table for URI transfers. 563 * All callbacks are optional and therefore can be NULL. 564 */ 565 typedef struct _SHAREDCLIPBOARDURITRANSFERCALLBACKS 566 { 567 /** Function pointer, called when the transfer has been started. */ 568 PFNSHAREDCLIPBOARDURITRANSFERSTARTED pfnTransferStarted; 569 /** Function pointer, called when the transfer is complete. */ 570 PFNSHAREDCLIPBOARDURITRANSFERCOMPLETE pfnTransferComplete; 571 /** Function pointer, called when the transfer has been canceled. */ 572 PFNSHAREDCLIPBOARDURITRANSFERCANCELED pfnTransferCanceled; 573 /** Function pointer, called when transfer resulted in an unrecoverable error. */ 574 PFNSHAREDCLIPBOARDURITRANSFERERROR pfnTransferError; 575 } SHAREDCLIPBOARDURITRANSFERCALLBACKS, *PSHAREDCLIPBOARDURITRANSFERCALLBACKS; 576 577 /** 578 * Structure for thread-related members for a single URI transfer. 579 */ 580 typedef struct _SHAREDCLIPBOARDURITRANSFERTHREAD 581 { 582 /** Thread handle for the reading / writing thread. 583 * Can be NIL_RTTHREAD if not being used. */ 584 RTTHREAD hThread; 585 /** Thread started indicator. */ 586 volatile bool fStarted; 587 /** Thread cancelled flag / indicator. */ 588 volatile bool fCancelled; 589 } SHAREDCLIPBOARDURITRANSFERTHREAD, *PSHAREDCLIPBOARDURITRANSFERTHREAD; 590 591 /** 592 * Structure for maintaining a single URI transfer. 593 */ 594 typedef struct _SHAREDCLIPBOARDURITRANSFER 595 { 596 /** The node member for using this struct in a RTList. */ 597 RTLISTNODE Node; 598 /** The Shared Clipboard provider in charge for this transfer. */ 599 SharedClipboardProvider *pProvider; 600 /** Opaque pointer to implementation-specific parameters. */ 601 void *pvUser; 602 /** Size (in bytes) of implementation-specific parameters. */ 603 size_t cbUser; 604 /** Contains thread-related attributes. */ 605 SHAREDCLIPBOARDURITRANSFERTHREAD Thread; 606 } SHAREDCLIPBOARDURITRANSFER, *PSHAREDCLIPBOARDURITRANSFER; 607 608 /** 609 * Structure for keeping URI clipboard information around. 610 */ 611 typedef struct _SHAREDCLIPBOARDURICTX 612 { 613 /** Critical section for serializing access. */ 614 RTCRITSECT CritSect; 615 /** List of active transfers. 616 * Use a list or something lateron. */ 617 RTLISTANCHOR List; 618 /** Number of concurrent transfers. 619 * At the moment we only support only one transfer at a time. */ 620 uint32_t cTransfers; 621 } SHAREDCLIPBOARDURICTX, *PSHAREDCLIPBOARDURICTX; 622 623 int SharedClipboardURITransferCreate(PSHAREDCLIPBOARDPROVIDERCREATIONCTX pCtx, 624 PSHAREDCLIPBOARDURITRANSFER *ppTransfer); 625 void SharedClipboardURITransferDestroy(PSHAREDCLIPBOARDURITRANSFER pTransfer); 626 void SharedClipboardURITransferReset(PSHAREDCLIPBOARDURITRANSFER pTransfer); 627 int SharedClipboardURITransferWrite(PSHAREDCLIPBOARDURITRANSFER pTransfer); 628 int SharedClipboardURITransferWriteThread(RTTHREAD hThread, void *pvUser); 629 630 int SharedClipboardURICtxInit(PSHAREDCLIPBOARDURICTX pURI, PSHAREDCLIPBOARDURITRANSFER pTransfer); 631 void SharedClipboardURICtxDestroy(PSHAREDCLIPBOARDURICTX pURI); 632 void SharedClipboardURICtxReset(PSHAREDCLIPBOARDURICTX pURI); 633 PSHAREDCLIPBOARDURITRANSFER SharedClipboardURICtxGetTransfer(PSHAREDCLIPBOARDURICTX pURI, uint32_t uIdx); 634 uint32_t SharedClipboardURICtxGetActiveTransfers(PSHAREDCLIPBOARDURICTX pURI); 635 int SharedClipboardURICtxTransferAdd(PSHAREDCLIPBOARDURICTX pURI, PSHAREDCLIPBOARDURITRANSFER pTransfer); 636 549 637 bool SharedClipboardMIMEHasFileURLs(const char *pcszFormat, size_t cchFormatMax); 550 638 bool SharedClipboardMIMENeedsCache(const char *pcszFormat, size_t cchFormatMax); -
trunk/include/VBox/GuestHost/SharedClipboard-win.h
r78897 r78974 89 89 } VBOXCLIPBOARDWINAPIOLD, *PVBOXCLIPBOARDWINAPIOLD; 90 90 91 #ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST92 class VBoxClipboardWinDataObject;93 94 /**95 * Structure for maintaining a single Windows URI transfer.96 */97 typedef struct _VBOXCLIPBOARDWINURITRANSFER98 {99 /** The Shared Clipboard provider in charge for this transfer. */100 SharedClipboardProvider *pProvider;101 /** Pointer to data object to use for this transfer. */102 VBoxClipboardWinDataObject *pDataObj;103 } VBOXCLIPBOARDWINURITRANSFER, *PVBOXCLIPBOARDWINURITRANSFER;104 105 /**106 * Structure for keeping Windows URI clipboard information around.107 */108 typedef struct _VBOXCLIPBOARDWINURI109 {110 /** Transfer data; at the moment we only support one transfer at a time.111 * Use a list or something lateron. */112 VBOXCLIPBOARDWINURITRANSFER Transfer;113 /** Number of concurrent transfers.114 * At the moment we only support only one transfer at a time. */115 uint32_t cTransfers;116 } VBOXCLIPBOARDWINURI, *PVBOXCLIPBOARDWINURI;117 #endif118 119 91 /** 120 92 * Structure for maintaining a Shared Clipboard context on Windows platforms. … … 123 95 { 124 96 /** Window handle of our (invisible) clipbaord window. */ 125 HWND hWnd;97 HWND hWnd; 126 98 /** Window handle which is next to us in the clipboard chain. */ 127 HWND hWndNextInChain;99 HWND hWndNextInChain; 128 100 /** Structure for maintaining the new clipboard API. */ 129 VBOXCLIPBOARDWINAPINEW newAPI;101 VBOXCLIPBOARDWINAPINEW newAPI; 130 102 /** Structure for maintaining the old clipboard API. */ 131 VBOXCLIPBOARDWINAPIOLD oldAPI; 132 #ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST 133 /** Structure for keeping URI clipboard information around. */ 134 VBOXCLIPBOARDWINURI URI; 135 #endif 103 VBOXCLIPBOARDWINAPIOLD oldAPI; 136 104 } VBOXCLIPBOARDWINCTX, *PVBOXCLIPBOARDWINCTX; 137 105 … … 156 124 int VBoxClipboardWinConvertCFHTMLToMIME(const char *pszSource, const uint32_t cch, char **ppszOutput, uint32_t *pcbOutput); 157 125 int VBoxClipboardWinConvertMIMEToCFHTML(const char *pszSource, size_t cb, char **ppszOutput, uint32_t *pcbOutput); 158 159 #ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST160 int VBoxClipboardWinURIInit(PVBOXCLIPBOARDWINURI pURI, PSHAREDCLIPBOARDPROVIDERCREATIONCTX pCtx);161 void VBoxClipboardWinURIDestroy(PVBOXCLIPBOARDWINURI pURI);162 void VBoxClipboardWinURIReset(PVBOXCLIPBOARDWINURI pURI);163 #endif164 126 165 127 # ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST … … 191 153 public: 192 154 193 VBoxClipboardWinDataObject( SharedClipboardProvider *pProvider,155 VBoxClipboardWinDataObject(PSHAREDCLIPBOARDURITRANSFER pTransfer, 194 156 LPFORMATETC pFormatEtc = NULL, LPSTGMEDIUM pStgMed = NULL, ULONG cFormats = 0); 195 157 virtual ~VBoxClipboardWinDataObject(void); … … 226 188 227 189 int Init(void); 190 void OnTransferComplete(int rc = VINF_SUCCESS); 191 void OnTransferCanceled(); 192 193 public: 194 228 195 static const char* ClipboardFormatToString(CLIPFORMAT fmt); 229 196 … … 241 208 protected: 242 209 243 Status m_enmStatus;244 LONG m_lRefCount;245 ULONG m_cFormats;246 LPFORMATETC m_pFormatEtc;247 LPSTGMEDIUM m_pStgMedium;248 SharedClipboardProvider *m_pProvider;249 IStream *m_pStream;250 ULONG m_uObjIdx;210 Status m_enmStatus; 211 LONG m_lRefCount; 212 ULONG m_cFormats; 213 LPFORMATETC m_pFormatEtc; 214 LPSTGMEDIUM m_pStgMedium; 215 PSHAREDCLIPBOARDURITRANSFER m_pTransfer; 216 IStream *m_pStream; 217 ULONG m_uObjIdx; 251 218 }; 252 219 … … 292 259 public: 293 260 294 VBoxClipboardWinStreamImpl(SharedClipboardProvider *pProvider, SharedClipboardURIObject *pURIObj); 261 VBoxClipboardWinStreamImpl(VBoxClipboardWinDataObject *pParent, 262 PSHAREDCLIPBOARDURITRANSFER pTransfer, SharedClipboardURIObject *pURIObj); 295 263 virtual ~VBoxClipboardWinStreamImpl(void); 296 264 … … 317 285 public: /* Own methods. */ 318 286 319 static HRESULT Create(SharedClipboardProvider *pProvider, SharedClipboardURIObject *pURIObj, IStream **ppStream); 287 static HRESULT Create(VBoxClipboardWinDataObject *pParent, 288 PSHAREDCLIPBOARDURITRANSFER pTransfer, SharedClipboardURIObject *pURIObj, IStream **ppStream); 320 289 321 290 private: 322 291 292 /** Pointer to the parent data object. */ 293 VBoxClipboardWinDataObject *m_pParent; 323 294 /** The stream object's current reference count. */ 324 LONG m_lRefCount;325 /** Pointer to the associated Shared Clipboard provider. */326 SharedClipboardProvider *m_pProvider;295 LONG m_lRefCount; 296 /** Pointer to the associated URI transfer object. */ 297 PSHAREDCLIPBOARDURITRANSFER m_pTransfer; 327 298 /** Pointer to the associated URI object. */ 328 SharedClipboardURIObject *m_pURIObj;299 SharedClipboardURIObject *m_pURIObj; 329 300 }; 330 301 302 /** 303 * Class for Windows-specifics for maintaining a single URI transfer. 304 * Set as pvUser / cbUser in SHAREDCLIPBOARDURICTX. 305 */ 306 class SharedClipboardWinURITransferCtx 307 { 308 public: 309 SharedClipboardWinURITransferCtx() 310 : pDataObj(NULL) { } 311 312 virtual ~SharedClipboardWinURITransferCtx() 313 { 314 if (pDataObj) 315 delete pDataObj; 316 } 317 318 /** Pointer to data object to use for this transfer. 319 * Can be NULL if not being used. */ 320 VBoxClipboardWinDataObject *pDataObj; 321 }; 331 322 # endif /* VBOX_WITH_SHARED_CLIPBOARD_URI_LIST */ 332 323 #endif /* !VBOX_INCLUDED_GuestHost_SharedClipboard_win_h */
Note:
See TracChangeset
for help on using the changeset viewer.