Changeset 87452 in vbox for trunk/include/VBox/GuestHost
- Timestamp:
- Jan 27, 2021 5:11:25 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 142470
- Location:
- trunk/include/VBox/GuestHost
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/GuestHost/SharedClipboard-transfers.h
r87072 r87452 595 595 /** 596 596 * Structure maintaining clipboard transfer provider context data. 597 * This is handed in to the provider i mplementation callbacks.598 */ 599 typedef struct SHCLPROVIDERCTX597 * This is handed in to the provider interface implementations. 598 */ 599 typedef struct _SHCLTXPROVIDERCTX 600 600 { 601 601 /** Pointer to the related Shared Clipboard transfer. */ … … 603 603 /** User-defined data pointer. Can be NULL if not needed. */ 604 604 void *pvUser; 605 } SHCLPROVIDERCTX, *PSHCLPROVIDERCTX;606 607 /**608 * Shared Clipboard transfer provider interface table.609 */610 typedef struct SHCLPROVIDERINTERFACE611 {612 DECLCALLBACKMEMBER(int, pfnTransferOpen,(PSHCLPROVIDERCTX pCtx));613 DECLCALLBACKMEMBER(int, pfnTransferClose,(PSHCLPROVIDERCTX pCtx));614 DECLCALLBACKMEMBER(int, pfnRootsGet,(PSHCLPROVIDERCTX pCtx, PSHCLROOTLIST *ppRootList));615 DECLCALLBACKMEMBER(int, pfnListOpen,(PSHCLPROVIDERCTX pCtx, PSHCLLISTOPENPARMS pOpenParms, PSHCLLISTHANDLE phList));616 DECLCALLBACKMEMBER(int, pfnListClose,(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList));617 DECLCALLBACKMEMBER(int, pfnListHdrRead,(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList, PSHCLLISTHDR pListHdr));618 DECLCALLBACKMEMBER(int, pfnListHdrWrite,(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList, PSHCLLISTHDR pListHdr));619 DECLCALLBACKMEMBER(int, pfnListEntryRead,(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList, PSHCLLISTENTRY pEntry));620 DECLCALLBACKMEMBER(int, pfnListEntryWrite,(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList, PSHCLLISTENTRY pEntry));621 DECLCALLBACKMEMBER(int, pfnObjOpen,(PSHCLPROVIDERCTX pCtx, PSHCLOBJOPENCREATEPARMS pCreateParms, PSHCLOBJHANDLE phObj));622 DECLCALLBACKMEMBER(int, pfnObjClose,(PSHCLPROVIDERCTX pCtx, SHCLOBJHANDLE hObj));623 DECLCALLBACKMEMBER(int, pfnObjRead,(PSHCLPROVIDERCTX pCtx, SHCLOBJHANDLE hObj, void *pvData, uint32_t cbData,624 uint32_t fFlags, uint32_t *pcbRead));625 DECLCALLBACKMEMBER(int, pfnObjWrite,(PSHCLPROVIDERCTX pCtx, SHCLOBJHANDLE hObj, void *pvData, uint32_t cbData,626 uint32_t fFlags, uint32_t *pcbWritten));627 } SHCLPROVIDERINTERFACE, *PSHCLPROVIDERINTERFACE;628 629 /**630 * Structure for the Shared Clipboard provider creation context.631 */632 typedef struct _SHCLPROVIDERCREATIONCTX633 {634 /** Specifies what the source of the provider is. */635 SHCLSOURCE enmSource;636 /** The provider interface table. */637 SHCLPROVIDERINTERFACE Interface;638 /** Provider callback data. */639 void *pvUser;640 } SHCLPROVIDERCREATIONCTX, *PSHCLPROVIDERCREATIONCTX;641 642 643 /**644 * Structure for storing Shared Clipboard transfer callback data.645 */646 typedef struct _SHCLTRANSFERCALLBACKDATA647 {648 /** Pointer to related Shared Clipboard transfer. */649 PSHCLTRANSFER pTransfer;650 /** Saved user pointer. */651 void *pvUser;652 605 /** Size (in bytes) of data at user pointer. */ 653 606 size_t cbUser; 654 } SHCLTRANSFERCALLBACKDATA, *PSHCLTRANSFERCALLBACKDATA; 655 656 /** 657 * Function callback table for Shared Clipboard transfers. 658 * 659 * All callbacks are optional and therefore can be NULL. 660 */ 661 typedef struct SHCLTRANSFERCALLBACKS 662 { 663 /** User pointer to data. Optional and can be NULL. */ 664 void *pvUser; 665 /** Size (in bytes) of user data pointing at. Optional and can be 0. */ 666 size_t cbUser; 667 /** Called after the transfer has been initialized. */ 668 DECLCALLBACKMEMBER(int, pfnTransferInitialize,(PSHCLTRANSFERCALLBACKDATA pData)); 607 } SHCLTXPROVIDERCTX, *PSHCLTXPROVIDERCTX; 608 609 struct SHCLTRANSFERCTX; 610 typedef struct SHCLTRANSFERCTX *PSHCLTRANSFERCTX; 611 612 /** 613 * Shared Clipboard transfer provider interface table. 614 */ 615 typedef struct _SHCLTXPROVIDERIFACE 616 { 617 /** Called when the transfer gets initialized. */ 618 DECLCALLBACKMEMBER(int, pfnInitialize,(PSHCLTXPROVIDERCTX pCtx)); 669 619 /** Called before the transfer will be started. */ 670 DECLCALLBACKMEMBER(int, pfnTransferStart,(PSHCLTRANSFERCALLBACKDATA pData)); 671 /** Called when reading / writing the list header is complete. */ 672 DECLCALLBACKMEMBER(void, pfnListHeaderComplete,(PSHCLTRANSFERCALLBACKDATA pData)); 673 /** Called when reading / writing a list entry is complete. */ 674 DECLCALLBACKMEMBER(void, pfnListEntryComplete,(PSHCLTRANSFERCALLBACKDATA pData)); 675 /** Called when the transfer is complete. */ 676 DECLCALLBACKMEMBER(void, pfnTransferComplete,(PSHCLTRANSFERCALLBACKDATA pData, int rc)); 620 DECLCALLBACKMEMBER(int, pfnStart,(PSHCLTXPROVIDERCTX pCtx)); 621 /** Called when the transfer has been complete. */ 622 DECLCALLBACKMEMBER(void, pfnCompleted,(PSHCLTXPROVIDERCTX pCtx, int rc)); 677 623 /** Called when the transfer has been canceled. */ 678 DECLCALLBACKMEMBER(void, pfn TransferCanceled,(PSHCLTRANSFERCALLBACKDATA pData));624 DECLCALLBACKMEMBER(void, pfnCanceled,(PSHCLTXPROVIDERCTX pCtx)); 679 625 /** Called when transfer resulted in an unrecoverable error. */ 680 DECLCALLBACKMEMBER(void, pfnTransferError,(PSHCLTRANSFERCALLBACKDATA pData, int rc)); 681 } SHCLTRANSFERCALLBACKS, *PSHCLTRANSFERCALLBACKS; 626 DECLCALLBACKMEMBER(void, pfnError,(PSHCLTXPROVIDERCTX pCtx, int rc)); 627 /** Called when transfer got registered to a transfer context. */ 628 DECLCALLBACKMEMBER(void, pfnRegistered,(PSHCLTXPROVIDERCTX pCtx, PSHCLTRANSFERCTX pTransferCtx)); 629 /** Called when transfer got unregistered from a transfer context. */ 630 DECLCALLBACKMEMBER(void, pfnUnregistered,(PSHCLTXPROVIDERCTX pCtx, PSHCLTRANSFERCTX pTransferCtx)); 631 632 DECLCALLBACKMEMBER(int, pfnRootsGet,(PSHCLTXPROVIDERCTX pCtx, PSHCLROOTLIST *ppRootList)); 633 DECLCALLBACKMEMBER(int, pfnListOpen,(PSHCLTXPROVIDERCTX pCtx, PSHCLLISTOPENPARMS pOpenParms, PSHCLLISTHANDLE phList)); 634 DECLCALLBACKMEMBER(int, pfnListClose,(PSHCLTXPROVIDERCTX pCtx, SHCLLISTHANDLE hList)); 635 DECLCALLBACKMEMBER(int, pfnListHdrRead,(PSHCLTXPROVIDERCTX pCtx, SHCLLISTHANDLE hList, PSHCLLISTHDR pListHdr)); 636 DECLCALLBACKMEMBER(int, pfnListHdrWrite,(PSHCLTXPROVIDERCTX pCtx, SHCLLISTHANDLE hList, PSHCLLISTHDR pListHdr)); 637 DECLCALLBACKMEMBER(int, pfnListEntryRead,(PSHCLTXPROVIDERCTX pCtx, SHCLLISTHANDLE hList, PSHCLLISTENTRY pEntry)); 638 DECLCALLBACKMEMBER(int, pfnListEntryWrite,(PSHCLTXPROVIDERCTX pCtx, SHCLLISTHANDLE hList, PSHCLLISTENTRY pEntry)); 639 DECLCALLBACKMEMBER(int, pfnObjOpen,(PSHCLTXPROVIDERCTX pCtx, PSHCLOBJOPENCREATEPARMS pCreateParms, PSHCLOBJHANDLE phObj)); 640 DECLCALLBACKMEMBER(int, pfnObjClose,(PSHCLTXPROVIDERCTX pCtx, SHCLOBJHANDLE hObj)); 641 DECLCALLBACKMEMBER(int, pfnObjRead,(PSHCLTXPROVIDERCTX pCtx, SHCLOBJHANDLE hObj, void *pvData, uint32_t cbData, 642 uint32_t fFlags, uint32_t *pcbRead)); 643 DECLCALLBACKMEMBER(int, pfnObjWrite,(PSHCLTXPROVIDERCTX pCtx, SHCLOBJHANDLE hObj, void *pvData, uint32_t cbData, 644 uint32_t fFlags, uint32_t *pcbWritten)); 645 } SHCLTXPROVIDERIFACE, *PSHCLTXPROVIDERIFACE; 646 647 /** 648 * Structure for the Shared Clipboard transfer provider creation context. 649 */ 650 typedef struct _SHCLTXPROVIDERCREATIONCTX 651 { 652 /** Specifies what the source of the provider is. */ 653 SHCLSOURCE enmSource; 654 /** The provider interface table. */ 655 SHCLTXPROVIDERIFACE Interface; 656 /** User-provided callback data. */ 657 void *pvUser; 658 /** Size (in bytes) of data at user pointer. */ 659 size_t cbUser; 660 } SHCLTXPROVIDERCREATIONCTX, *PSHCLTXPROVIDERCREATIONCTX; 682 661 683 662 /** … … 737 716 RTLISTANCHOR lstObj; 738 717 /** The transfer's own provider context. */ 739 SHCL PROVIDERCTXProviderCtx;718 SHCLTXPROVIDERCTX ProviderCtx; 740 719 /** The transfer's provider interface. */ 741 SHCLPROVIDERINTERFACE ProviderIface; 742 /** The transfer's (optional) callback table. */ 743 SHCLTRANSFERCALLBACKS Callbacks; 720 SHCLTXPROVIDERIFACE ProviderIface; 744 721 /** Opaque pointer to implementation-specific parameters. */ 745 722 void *pvUser; … … 782 759 } SHCLHTTPSERVER; 783 760 typedef SHCLHTTPSERVER *PSHCLHTTPSERVER; 761 762 typedef struct _SHCLHTTPCONTEXT 763 { 764 /** HTTP server instance data. */ 765 SHCLHTTPSERVER HttpServer; 766 } SHCLHTTPCONTEXT; 767 typedef SHCLHTTPCONTEXT *PSHCLHTTPCONTEXT; 768 784 769 #endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP */ 785 770 … … 787 772 * Structure for keeping Shared Clipboard transfer context around. 788 773 */ 789 typedef struct _SHCLTRANSFERCTX774 struct SHCLTRANSFERCTX 790 775 { 791 776 /** Critical section for serializing access. */ … … 805 790 SHCLHTTPSERVER HttpServer; 806 791 #endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP */ 807 } SHCLTRANSFERCTX, *PSHCLTRANSFERCTX;792 }; 808 793 809 794 int ShClTransferObjCtxInit(PSHCLCLIENTTRANSFEROBJCTX pObjCtx); … … 828 813 829 814 int ShClTransferCreate(PSHCLTRANSFER *ppTransfer); 815 int ShClTransferInit(PSHCLTRANSFER pTransfer, SHCLTRANSFERDIR enmDir, SHCLSOURCE enmSource); 830 816 int ShClTransferDestroy(PSHCLTRANSFER pTransfer); 831 832 int ShClTransferInit(PSHCLTRANSFER pTransfer, SHCLTRANSFERID uID, SHCLTRANSFERDIR enmDir, SHCLSOURCE enmSource);833 int ShClTransferOpen(PSHCLTRANSFER pTransfer);834 int ShClTransferClose(PSHCLTRANSFER pTransfer);835 817 836 818 int ShClTransferListOpen(PSHCLTRANSFER pTransfer, PSHCLLISTOPENPARMS pOpenParms, PSHCLLISTHANDLE phList); … … 881 863 bool ShClTransferListEntryIsValid(PSHCLLISTENTRY pListEntry); 882 864 883 int ShClTransferSet Interface(PSHCLTRANSFER pTransfer, PSHCLPROVIDERCREATIONCTX pCreationCtx);865 int ShClTransferSetProviderIface(PSHCLTRANSFER pTransfer, PSHCLTXPROVIDERCREATIONCTX pCreationCtx); 884 866 int ShClTransferRootsSet(PSHCLTRANSFER pTransfer, const char *pszRoots, size_t cbRoots); 885 867 void ShClTransferReset(PSHCLTRANSFER pTransfer); … … 895 877 int ShClTransferRun(PSHCLTRANSFER pTransfer, PFNRTTHREAD pfnThreadFunc, void *pvUser); 896 878 int ShClTransferStart(PSHCLTRANSFER pTransfer); 897 void ShClTransferSetCallbacks(PSHCLTRANSFER pTransfer, PSHCLTRANSFERCALLBACKS pCallbacks);898 879 899 880 int ShClTransferCtxInit(PSHCLTRANSFERCTX pTransferCtx); 900 881 void ShClTransferCtxDestroy(PSHCLTRANSFERCTX pTransferCtx); 901 882 void ShClTransferCtxReset(PSHCLTRANSFERCTX pTransferCtx); 902 PSHCLTRANSFER ShClTransferCtxGetTransfer(PSHCLTRANSFERCTX pTransferCtx, uint32_t uIdx); 883 PSHCLTRANSFER ShClTransferCtxGetTransferById(PSHCLTRANSFERCTX pTransferCtx, uint32_t uID); 884 PSHCLTRANSFER ShClTransferCtxGetTransferByIndex(PSHCLTRANSFERCTX pTransferCtx, uint32_t uIdx); 903 885 uint32_t ShClTransferCtxGetRunningTransfers(PSHCLTRANSFERCTX pTransferCtx); 904 886 uint32_t ShClTransferCtxGetTotalTransfers(PSHCLTRANSFERCTX pTransferCtx); … … 906 888 bool ShClTransferCtxTransfersMaximumReached(PSHCLTRANSFERCTX pTransferCtx); 907 889 int ShClTransferCtxTransferRegister(PSHCLTRANSFERCTX pTransferCtx, PSHCLTRANSFER pTransfer, SHCLTRANSFERID *pidTransfer); 908 int ShClTransferCtxTransferRegisterByI ndex(PSHCLTRANSFERCTX pTransferCtx, PSHCLTRANSFER pTransfer, SHCLTRANSFERID idTransfer);890 int ShClTransferCtxTransferRegisterById(PSHCLTRANSFERCTX pTransferCtx, PSHCLTRANSFER pTransfer, SHCLTRANSFERID idTransfer); 909 891 int ShClTransferCtxTransferUnregister(PSHCLTRANSFERCTX pTransferCtx, SHCLTRANSFERID idTransfer); 910 892 911 893 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP 894 int ShClHttpTransferCreate(PSHCLHTTPCONTEXT pCtx, PSHCLTRANSFER pTransfer); 895 int ShClHttpTransferDestroy(PSHCLHTTPCONTEXT pCtx, PSHCLTRANSFER pTransfer); 896 912 897 int ShClTransferHttpServerCreate(PSHCLHTTPSERVER pSrv, uint16_t *puPort); 913 898 int ShClTransferHttpServerCreateEx(PSHCLHTTPSERVER pSrv, uint16_t uPort); … … 922 907 char *ShClTransferHttpServerGetUrlA(PSHCLHTTPSERVER pSrv, SHCLTRANSFERID idTransfer); 923 908 bool ShClTransferHttpServerIsRunning(PSHCLHTTPSERVER pSrv); 924 #endif 909 #endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP */ 925 910 926 911 void ShClFsObjFromIPRT(PSHCLFSOBJINFO pDst, PCRTFSOBJINFO pSrc); -
trunk/include/VBox/GuestHost/SharedClipboard-x11.h
r87082 r87452 35 35 36 36 #include <VBox/GuestHost/SharedClipboard.h> 37 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 38 # include <VBox/GuestHost/SharedClipboard-transfers.h> 39 #endif 37 40 38 41 /** Enables the Xt busy / update handling. */ … … 105 108 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 106 109 /** The best HTML format X11 has to offer, as an index into the formats table. */ 107 SHCLX11FMTIDX idxFmtURI; 110 SHCLX11FMTIDX idxFmtURI; 111 # ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP 112 /** HTTP transfer context data. */ 113 SHCLHTTPCONTEXT HttpCtx; 114 # endif 108 115 #endif 109 116 /** What kind of formats does VBox have to offer? */ … … 148 155 * @{ 149 156 */ 150 DECLCALLBACK(int) ShClX11RequestDataForX11Callback(SHCLCONTEXT *pCtx, SHCLFORMAT uFmt, void **ppv, uint32_t *pcb); 151 DECLCALLBACK(void) ShClX11ReportFormatsCallback(SHCLCONTEXT *pCtx, SHCLFORMATS fFormats); 152 DECLCALLBACK(void) ShClX11RequestFromX11CompleteCallback(SHCLCONTEXT *pCtx, int rc, CLIPREADCBREQ *pReq, void *pv, uint32_t cb); 157 /** 158 * Callback for reading clipboard data from the guest. 159 * The function will be invoked for every single target the clipboard requests. 160 * 161 * @note Runs in Xt event thread. 162 * 163 * @returns VBox status code. VERR_NO_DATA if no data available. 164 * @param pCtx Pointer to the host clipboard structure. 165 * @param uFmt The format in which the data should be transferred 166 * (VBOX_SHCL_FMT_XXX). 167 * @param ppv Returns an allocated buffer with data read from the guest on success. 168 * Needs to be free'd with RTMemFree() by the caller. 169 * @param pcb Returns the amount of data read (in bytes) on success. 170 */ 171 DECLCALLBACK(int) ShClX11RequestDataForX11Callback(PSHCLCONTEXT pCtx, SHCLFORMAT uFmt, void **ppv, uint32_t *pcb); 172 173 /** 174 * Reports formats available in the X11 clipboard to VBox. 175 * 176 * @note Runs in Xt event thread. 177 * 178 * @param pCtx Opaque context pointer for the glue code. 179 * @param fFormats The formats available. 180 */ 181 DECLCALLBACK(void) ShClX11ReportFormatsCallback(PSHCLCONTEXT pCtx, SHCLFORMATS fFormats); 182 183 /** 184 * Called by the backend to tell us that a request for data from X11 has completed. 185 * 186 * @param pCtx Our context information. 187 * @param rcCompletion The completion status of the request. 188 * @param pReq The request structure that we passed in when we started 189 * the request. We RTMemFree() this in this function. 190 * @param pv The clipboard data returned from X11 if the request succeeded (see @a rcCompletion). 191 * @param cb The size of the data in @a pv. 192 */ 193 DECLCALLBACK(void) ShClX11RequestFromX11CompleteCallback(PSHCLCONTEXT pCtx, int rc, CLIPREADCBREQ *pReq, void *pv, uint32_t cb); 153 194 /** @} */ 154 195
Note:
See TracChangeset
for help on using the changeset viewer.