Changeset 79120 in vbox for trunk/include/VBox
- Timestamp:
- Jun 13, 2019 10:08:33 AM (6 years ago)
- Location:
- trunk/include/VBox
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/GuestHost/SharedClipboard-uri.h
r79107 r79120 29 29 #ifndef RT_WITHOUT_PRAGMA_ONCE 30 30 # pragma once 31 #endif 32 33 #ifdef VBOX_WITH_SHARED_CLIPBOARD_HOST 34 #include <map> /* Needed for host provider. */ 31 35 #endif 32 36 … … 378 382 }; 379 383 380 int SharedClipboardDataHeaderInit(PVBOXCLIPBOARDDATAHDR pDataHdr); 381 void SharedClipboardDataHeaderDestroy(PVBOXCLIPBOARDDATAHDR pDataHdr); 384 int SharedClipboardURIDataHdrInit(PVBOXCLIPBOARDDATAHDR pDataHdr); 385 void SharedClipboardURIDataHdrDestroy(PVBOXCLIPBOARDDATAHDR pDataHdr); 386 bool SharedClipboardURIDataHdrIsValid(PVBOXCLIPBOARDDATAHDR pDataHdr); 387 bool SharedClipboardURIDataChunkIsValid(PVBOXCLIPBOARDDATACHUNK pDataChunk); 388 void SharedClipboardURIDirDataDestroy(PVBOXCLIPBOARDDIRDATA pDirData); 389 bool SharedClipboardURIDirDataIsValid(PVBOXCLIPBOARDDIRDATA pDirData); 390 void SharedClipboardURIFileHdrDestroy(PVBOXCLIPBOARDFILEHDR pFileHdr); 391 bool SharedClipboardURIFileHdrIsValid(PVBOXCLIPBOARDFILEHDR pFileHdr, PVBOXCLIPBOARDDATAHDR pDataHdr); 392 void SharedClipboardURIFileDataDestroy(PVBOXCLIPBOARDFILEDATA pFileData); 393 bool SharedClipboardURIFileDataIsValid(PVBOXCLIPBOARDFILEDATA pFileData, PVBOXCLIPBOARDDATAHDR pDataHdr); 382 394 383 395 /** … … 405 417 void *SharedClipboardMetaDataMutableRaw(PSHAREDCLIPBOARDMETADATA pMeta); 406 418 const void *SharedClipboardMetaDataRaw(PSHAREDCLIPBOARDMETADATA pMeta); 419 420 /** 421 * Structure for maintaining an URI transfer cache. 422 */ 423 typedef struct _SHAREDCLIPBOARDURITRANSFERCACHE 424 { 425 /** The transfer's cached data header. */ 426 VBOXCLIPBOARDDATAHDR Header; 427 /** The transfer's cached meta data. */ 428 SHAREDCLIPBOARDMETADATA Meta; 429 } SHAREDCLIPBOARDURITRANSFERCACHE, *PSHAREDCLIPBOARDURITRANSFERCACHE; 407 430 408 431 /** … … 436 459 437 460 /** 461 * Structure for read parameters. 462 */ 463 typedef struct _SHAREDCLIPBOARDPROVIDERREADPARMS 464 { 465 union 466 { 467 struct 468 { 469 470 } HostService; 471 } u; 472 } SHAREDCLIPBOARDPROVIDERREADPARMS, *PSHAREDCLIPBOARDPROVIDERREADPARMS; 473 474 /** 475 * Structure for write parameters. 476 */ 477 typedef struct _SHAREDCLIPBOARDPROVIDERWRITEPARMS 478 { 479 union 480 { 481 struct 482 { 483 uint32_t uMsg; 484 uint32_t cParms; 485 VBOXHGCMSVCPARM *paParms; 486 } HostService; 487 } u; 488 } SHAREDCLIPBOARDPROVIDERWRITEPARMS, *PSHAREDCLIPBOARDPROVIDERWRITEPARMS; 489 490 /** 438 491 * Interface class acting as a lightweight proxy for abstracting reading / writing clipboard data. 439 492 * … … 460 513 virtual int WriteDataHdr(const PVBOXCLIPBOARDDATAHDR pDataHdr); 461 514 462 virtual int ReadMetaData(const PVBOXCLIPBOARDDATAHDR pDataHdr, void *pvMeta, uint32_t cbMeta, uint32_t *pcbRead, uint32_t fFlags = 0); 463 virtual int WriteMetaData(const PVBOXCLIPBOARDDATAHDR pDataHdr, const void *pvMeta, uint32_t cbMeta, uint32_t *pcbWritten, 515 virtual int ReadDataChunk(const PVBOXCLIPBOARDDATAHDR pDataHdr, void *pvChunk, uint32_t cbChunk, uint32_t *pcbRead, 464 516 uint32_t fFlags = 0); 517 virtual int WriteDataChunk(const PVBOXCLIPBOARDDATAHDR pDataHdr, const void *pvChunk, uint32_t cbChunk, uint32_t *pcbWritten, 518 uint32_t fFlags = 0); 465 519 466 520 virtual int ReadDirectory(PVBOXCLIPBOARDDIRDATA pDirData); … … 474 528 475 529 virtual void Reset(void); 530 531 public: /* Optional callback handling. */ 532 533 /*virtual int SetCallbacks();*/ 534 535 virtual int OnRead(PSHAREDCLIPBOARDPROVIDERREADPARMS pParms); 536 virtual int OnWrite(PSHAREDCLIPBOARDPROVIDERWRITEPARMS pParms); 476 537 477 538 protected: … … 501 562 int WriteDataHdr(const PVBOXCLIPBOARDDATAHDR pDataHdr); 502 563 503 int ReadMetaData(const PVBOXCLIPBOARDDATAHDR pDataHdr, void *pvMeta, uint32_t cbMeta, uint32_t *pcbRead, uint32_t fFlags = 0); 504 int WriteMetaData(const PVBOXCLIPBOARDDATAHDR pDataHdr, const void *pvMeta, uint32_t cbMeta, uint32_t *pcbWritten, 505 uint32_t fFlags = 0); 564 int ReadDataChunkk(const PVBOXCLIPBOARDDATAHDR pDataHdr, void *pvChunk, uint32_t cbChunk, uint32_t *pcbRead, 565 uint32_t fFlags = 0); 566 int WriteDataChunk(const PVBOXCLIPBOARDDATAHDR pDataHdr, const void *pvChunk, uint32_t cbChunk, uint32_t *pcbWritten, 567 uint32_t fFlags = 0); 506 568 507 569 int ReadDirectory(PVBOXCLIPBOARDDIRDATA pDirData); … … 524 586 }; 525 587 588 #ifdef VBOX_WITH_SHARED_CLIPBOARD_HOST 526 589 /** 527 590 * Shared Clipboard provider implementation for host service (host side). … … 540 603 int WriteDataHdr(const PVBOXCLIPBOARDDATAHDR pDataHdr); 541 604 542 int Rea dMetaData(const PVBOXCLIPBOARDDATAHDR pDataHdr, void *pvMeta, uint32_t cbMeta, uint32_t *pcbRead, uint32_t fFlags = 0);543 int Write MetaData(const PVBOXCLIPBOARDDATAHDR pDataHdr, const void *pvMeta, uint32_t cbMeta, uint32_t *pcbWritten,544 uint32_t fFlags = 0);605 int ReaaDataChunk(const PVBOXCLIPBOARDDATAHDR pDataHdr, void *pvMeta, uint32_t cbMeta, uint32_t *pcbRead, uint32_t fFlags = 0); 606 int WriteDataChunk(const PVBOXCLIPBOARDDATAHDR pDataHdr, const void *pvMeta, uint32_t cbMeta, uint32_t *pcbWritten, 607 uint32_t fFlags = 0); 545 608 546 609 int ReadDirectory(PVBOXCLIPBOARDDIRDATA pDirData); … … 555 618 void Reset(void); 556 619 620 public: 621 622 int OnRead(PSHAREDCLIPBOARDPROVIDERREADPARMS pParms); 623 int OnWrite(PSHAREDCLIPBOARDPROVIDERWRITEPARMS pParms); 624 557 625 protected: 558 626 559 627 SharedClipboardProviderHostService(void); 628 629 /** 630 * Structure for maintaining an internal event. 631 */ 632 struct Event 633 { 634 Event(uint32_t uMsg); 635 virtual ~Event(); 636 637 uint32_t DataSize(void); 638 void *DataRaw(void); 639 int SetData(const void *pvData, uint32_t cbData); 640 int Wait(RTMSINTERVAL uTimeoutMs); 641 642 /** The event's associated message ID (guest function number). */ 643 uint32_t mMsg; 644 /** The event's own event semaphore. */ 645 RTSEMEVENT mEvent; 646 void *mpvData; 647 uint32_t mcbData; 648 }; 649 650 /** Map of events; the key is the guest function number (VBOX_SHARED_CLIPBOARD_GUEST_FN_XXX). */ 651 typedef std::map<uint32_t, Event *> EventMap; 652 653 int eventRegister(uint32_t uMsg); 654 int eventUnregister(uint32_t uMsg); 655 int eventSignal(uint32_t uMsg); 656 SharedClipboardProviderHostService::Event *eventGet(uint32_t uMsg); 657 658 protected: 659 660 RTMSINTERVAL m_uTimeoutMs; 661 SHAREDCLIPBOARDURITRANSFERCACHE m_Cache; 662 EventMap m_mapEvents; 663 560 664 }; 665 #endif /* VBOX_WITH_SHARED_CLIPBOARD_HOST */ 561 666 562 667 struct _SHAREDCLIPBOARDURITRANSFER; … … 659 764 /** The transfer's direction. */ 660 765 SHAREDCLIPBOARDURITRANSFERDIR enmDir; 661 /** The transfer's meta data cache. */ 662 VBOXCLIPBOARDDATAHDR Header; 663 /** The transfer's meta data cache. */ 664 SHAREDCLIPBOARDMETADATA Meta; 766 /** The transfer's cache. */ 767 SHAREDCLIPBOARDURITRANSFERCACHE Cache; 665 768 /** The transfer's own (local) area, if any (can be NULL if not needed). 666 769 * The area itself has a clipboard area ID assigned. -
trunk/include/VBox/HostServices/VBoxClipboardSvc.h
r79107 r79120 65 65 */ 66 66 /** Calls the host and waits (blocking) for an host event VBOX_SHARED_CLIPBOARD_HOST_MSG_*. */ 67 #define VBOX_SHARED_CLIPBOARD_ FN_GET_HOST_MSG 167 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_GET_HOST_MSG 1 68 68 /** Sends a list of available formats to the host. */ 69 #define VBOX_SHARED_CLIPBOARD_ FN_REPORT_FORMATS 269 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_REPORT_FORMATS 2 70 70 /** Reads data in specified format from the host. */ 71 #define VBOX_SHARED_CLIPBOARD_ FN_READ_DATA 371 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_READ_DATA 3 72 72 /** Writes data in requested format to the host. */ 73 #define VBOX_SHARED_CLIPBOARD_ FN_WRITE_DATA 473 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_DATA 4 74 74 /** Reads the data header at the beginning of a (new) data transfer from the host. 75 75 * New since URI handling was implemented. */ 76 #define VBOX_SHARED_CLIPBOARD_ FN_READ_DATA_HDR 576 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_READ_DATA_HDR 5 77 77 /** Writes data in requested format to the host. */ 78 #define VBOX_SHARED_CLIPBOARD_ FN_READ_DATA_CHUNK 678 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_READ_DATA_CHUNK 6 79 79 /** Writes the data header at the beginning of a (new) data transfer to the host. 80 80 * New since URI handling was implemented. */ 81 #define VBOX_SHARED_CLIPBOARD_ FN_WRITE_DATA_HDR 781 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_DATA_HDR 7 82 82 /** Writes data in requested format to the host. */ 83 #define VBOX_SHARED_CLIPBOARD_ FN_WRITE_DATA_CHUNK 883 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_DATA_CHUNK 8 84 84 /** Reads a new directory entry from the host. 85 85 * New since URI handling was implemented. */ 86 #define VBOX_SHARED_CLIPBOARD_ FN_READ_DIR 986 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_READ_DIR 9 87 87 /** Writes a new directory entry to the host. 88 88 * New since URI handling was implemented. */ 89 #define VBOX_SHARED_CLIPBOARD_ FN_WRITE_DIR 1089 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_DIR 10 90 90 /** Reads a new file header entry from the host. 91 91 * New since URI handling was implemented. */ 92 #define VBOX_SHARED_CLIPBOARD_ FN_READ_FILE_HDR 1192 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_READ_FILE_HDR 11 93 93 /** Writes a new file header entry to the host. 94 94 * New since URI handling was implemented. */ 95 #define VBOX_SHARED_CLIPBOARD_ FN_WRITE_FILE_HDR 1295 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_FILE_HDR 12 96 96 /** Reads a new file data chunk entry from the host. 97 97 * New since URI handling was implemented. */ 98 #define VBOX_SHARED_CLIPBOARD_ FN_READ_FILE_DATA 1398 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_READ_FILE_DATA 13 99 99 /** Writes a new file data chunk entry to the host. 100 100 * New since URI handling was implemented. */ 101 #define VBOX_SHARED_CLIPBOARD_ FN_WRITE_FILE_DATA 14101 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_FILE_DATA 14 102 102 /** Reports cancellation of the current operation to the host. 103 103 * New since URI handling was implemented. */ 104 #define VBOX_SHARED_CLIPBOARD_ FN_WRITE_CANCEL 15104 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_CANCEL 15 105 105 /** Reports an error to the host. 106 106 * New since URI handling was implemented. */ 107 #define VBOX_SHARED_CLIPBOARD_ FN_WRITE_ERROR 16107 #define VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_ERROR 16 108 108 109 109 /** The maximum default chunk size for a single data transfer. */ … … 347 347 enum eVBoxClipboardCallbackMagics 348 348 { 349 CB_MAGIC_CLIPBOARD_WRITE_DATA_HDR = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_ FN_WRITE_DATA_HDR, 0),350 CB_MAGIC_CLIPBOARD_WRITE_DATA_CHUNK = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_ FN_WRITE_DATA_CHUNK, 0),351 CB_MAGIC_CLIPBOARD_WRITE_DIR = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_ FN_WRITE_DIR, 0),352 CB_MAGIC_CLIPBOARD_WRITE_FILE_HDR = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_ FN_WRITE_FILE_HDR, 0),353 CB_MAGIC_CLIPBOARD_WRITE_FILE_DATA = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_ FN_WRITE_FILE_DATA, 0),354 CB_MAGIC_CLIPBOARD_WRITE_ERROR = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_ FN_WRITE_ERROR, 0)349 CB_MAGIC_CLIPBOARD_WRITE_DATA_HDR = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_DATA_HDR, 0), 350 CB_MAGIC_CLIPBOARD_WRITE_DATA_CHUNK = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_DATA_CHUNK, 0), 351 CB_MAGIC_CLIPBOARD_WRITE_DIR = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_DIR, 0), 352 CB_MAGIC_CLIPBOARD_WRITE_FILE_HDR = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_FILE_HDR, 0), 353 CB_MAGIC_CLIPBOARD_WRITE_FILE_DATA = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_FILE_DATA, 0), 354 CB_MAGIC_CLIPBOARD_WRITE_ERROR = VBOX_CLIPBOARD_CB_MAGIC_MAKE(VBOX_SHARED_CLIPBOARD_GUEST_FN_WRITE_ERROR, 0) 355 355 }; 356 356 … … 445 445 void VBoxSvcClipboardUnlock(void); 446 446 447 #ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST 448 int VBoxSvcClipboardURIReadDataHdr(uint32_t cParms, VBOXHGCMSVCPARM paParms[], PVBOXCLIPBOARDDATAHDR pDataHdr); 449 int VBoxSvcClipboardURIReadDataChunk(uint32_t cParms, VBOXHGCMSVCPARM paParms[], PVBOXCLIPBOARDDATACHUNK pDataChunk); 450 int VBoxSvcClipboardURIReadDir(uint32_t cParms, VBOXHGCMSVCPARM paParms[], PVBOXCLIPBOARDDIRDATA pDirData); 451 int VBoxSvcClipboardURIReadFileHdr(uint32_t cParms, VBOXHGCMSVCPARM paParms[], PVBOXCLIPBOARDFILEHDR pFileHdr); 452 int VBoxSvcClipboardURIReadFileData(uint32_t cParms, VBOXHGCMSVCPARM paParms[], PVBOXCLIPBOARDFILEDATA pFileData); 453 #endif 454 447 455 #endif /* !VBOX_INCLUDED_HostServices_VBoxClipboardSvc_h */ 448 456
Note:
See TracChangeset
for help on using the changeset viewer.