VirtualBox

Changeset 78725 in vbox for trunk/include/VBox


Ignore:
Timestamp:
May 24, 2019 1:15:59 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
130804
Message:

Shared Clipboard/URI: Update.

Location:
trunk/include/VBox
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/GuestHost/SharedClipboard-uri.h

    r78683 r78725  
    6262class SharedClipboardCache
    6363{
    64 
    6564public:
    6665
     
    7271public:
    7372
    74     uint16_t AddRef(void);
    75     uint16_t Release(void);
     73    uint32_t AddRef(void);
     74    uint32_t Release(void);
    7675
    7776    int Lock(void);
     
    117116    /** Associated clipboard area ID. */
    118117    SHAREDCLIPBOARDAREAID        m_uID;
     118};
     119
     120class SharedClipboardURIList;
     121
     122/**
     123 * Class acting as a proxy to abstract reading / writing clipboard data.
     124 *
     125 * This is needed because various implementations can run on the host *or* on the guest side,
     126 * requiring different methods for handling the actual data.
     127 */
     128class SharedClipboardProvider
     129{
     130public:
     131
     132    SharedClipboardProvider(void);
     133    virtual ~SharedClipboardProvider(void);
     134
     135public:
     136
     137    enum SourceType
     138    {
     139        /** Invalid source type. */
     140        SourceType_Invalid = 0,
     141        /** Source is VbglR3. */
     142        SourceType_VbglR3,
     143        /** Source is the host service. */
     144        SourceType_HostService
     145    };
     146
     147public:
     148
     149    uint32_t AddRef(void);
     150    uint32_t Release(void);
     151
     152public:
     153
     154    int SetSource(SourceType enmSource);
     155    int ReadMetaData(SharedClipboardURIList &URIList, uint32_t fFlags = 0);
     156
     157protected:
     158
     159    /** Number of references to this instance. */
     160    volatile uint32_t            m_cRefs;
     161    /** Source type to handle. */
     162    SourceType                   m_enmSource;
    119163};
    120164
     
    368412const void *SharedClipboardMetaDataRaw(PSHAREDCLIPBOARDMETADATA pMeta);
    369413
     414bool SharedClipboardMIMEHasFileURLs(const char *pcszFormat, size_t cchFormatMax);
     415bool SharedClipboardMIMENeedsCache(const char *pcszFormat, size_t cchFormatMax);
     416
    370417#endif /* !VBOX_INCLUDED_GuestHost_SharedClipboard_uri_h */
    371418
  • trunk/include/VBox/GuestHost/SharedClipboard-win.h

    r78581 r78725  
    3939#  include <iprt/win/shlobj.h> /* For DROPFILES and friends. */
    4040#  include <oleidl.h>
     41
     42# include <VBox/GuestHost/SharedClipboard-uri.h>
    4143# endif
    4244
     
    9597typedef struct _VBOXCLIPBOARDWINURITRANSFER
    9698{
     99    /** The Shared Clipboard provider in charge for this transfer. */
     100    SharedClipboardProvider     Provider;
    97101    /** Pointer to data object to use for this transfer. */
    98102    VBoxClipboardWinDataObject *pDataObj;
     
    181185public:
    182186
    183     VBoxClipboardWinDataObject(LPFORMATETC pFormatEtc = NULL, LPSTGMEDIUM pStgMed = NULL, ULONG cFormats = 0);
     187    VBoxClipboardWinDataObject(SharedClipboardProvider *pProvider,
     188                               LPFORMATETC pFormatEtc = NULL, LPSTGMEDIUM pStgMed = NULL, ULONG cFormats = 0);
    184189    virtual ~VBoxClipboardWinDataObject(void);
    185190
     
    214219public:
    215220
    216     int Init(uint32_t idClient);
     221    int Init(void);
    217222    static const char* ClipboardFormatToString(CLIPFORMAT fmt);
    218223
     
    222227
    223228    int copyToHGlobal(const void *pvData, size_t cbData, UINT fFlags, HGLOBAL *phGlobal);
    224     int createFileGroupDescriptor(const SharedClipboardURIList &URIList, HGLOBAL *phGlobal);
     229    int createFileGroupDescriptor(const SharedClipboardURIList &URIList, bool fUnicode, HGLOBAL *phGlobal);
    225230
    226231    bool lookupFormatEtc(LPFORMATETC pFormatEtc, ULONG *puIndex);
     
    228233                        LONG lindex = -1, DWORD dwAspect = DVASPECT_CONTENT, DVTARGETDEVICE *pTargetDevice = NULL);
    229234
    230     Status      mStatus;
    231     LONG        mRefCount;
    232     ULONG       mcFormats;
    233     LPFORMATETC mpFormatEtc;
    234     LPSTGMEDIUM mpStgMedium;
    235     /** The HGCM client ID for the URI data transfers. */
    236     uint32_t    muClientID;
    237     IStream    *mpStream;
     235protected:
     236
     237    Status                   m_enmStatus;
     238    LONG                     m_lRefCount;
     239    ULONG                    m_cFormats;
     240    LPFORMATETC              m_pFormatEtc;
     241    LPSTGMEDIUM              m_pStgMedium;
     242    SharedClipboardProvider *m_pProvider;
     243    IStream                 *m_pStream;
    238244};
    239245
     
    279285public:
    280286
    281     VBoxClipboardWinStreamImpl(void);
     287    VBoxClipboardWinStreamImpl(SharedClipboardProvider *pProvider);
    282288    virtual ~VBoxClipboardWinStreamImpl(void);
    283289
     
    304310public: /* Own methods. */
    305311
    306     static HRESULT Create(IStream **ppStream);
     312    static HRESULT Create(SharedClipboardProvider *pProvider, IStream **ppStream);
    307313
    308314private:
    309315
    310     LONG        m_lRefCount;
     316    /** The stream object's current reference count. */
     317    LONG                     m_lRefCount;
     318    /** Pointer to the associated Shared Clipboard provider. */
     319    SharedClipboardProvider *m_pProvider;
    311320};
    312321
  • trunk/include/VBox/HostServices/VBoxClipboardSvc.h

    r78683 r78725  
    176176 * VBOX_SHARED_CLIPBOARD_FN_WRITE_DATA_HDR
    177177 */
    178 typedef struct _VBoxClipboardReadDataHdrMsg
     178typedef struct _VBoxClipboardDataHdrMsg
    179179{
    180180    VBGLIOCHGCMCALL hdr;
     
    287287    /** Total size (in bytes). */
    288288    HGCMFunctionParameter cbTotal;      /* OUT uint64_t */
    289 } VBoxClipboardWriteReadHdrMsg, VBoxClipboardWriteFileHdrMsg;
     289} VBoxClipboardReadFileHdrMsg, VBoxClipboardWriteFileHdrMsg;
    290290
    291291#define VBOX_SHARED_CLIPBOARD_CPARMS_READ_FILE_HDR  6
     
    314314    /** Size (in bytes) of curren data chunk checksum. */
    315315    HGCMFunctionParameter cbChecksum;   /* OUT uint32_t */
    316 } VBoxClipboardWriteFileDataMsg;
     316} VBoxClipboardReadFileDataMsg, VBoxClipboardWriteFileDataMsg;
    317317
    318318#define VBOX_SHARED_CLIPBOARD_CPARMS_READ_FILE_DATA  5
     
    449449
    450450# ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST
    451 bool VBoxSvcClipboardDataHdrIsValid(PVBOXCLIPBOARDDATAHDR pData);
    452 bool VBoxSvcClipboardDataChunkIsValid(PVBOXCLIPBOARDDATACHUNK pData);
    453 bool VBoxSvcClipboardDirDataIsValid(PVBOXCLIPBOARDDIRDATA pData);
     451bool VBoxSvcClipboardDataHdrIsValid(PVBOXCLIPBOARDDATAHDR pDataHdr);
     452bool VBoxSvcClipboardDataChunkIsValid(PVBOXCLIPBOARDDATACHUNK pDataChunk);
     453bool VBoxSvcClipboardDirDataIsValid(PVBOXCLIPBOARDDIRDATA pDirData);
    454454bool VBoxSvcClipboardFileHdrIsValid(PVBOXCLIPBOARDFILEHDR pFileHdr, PVBOXCLIPBOARDDATAHDR pDataHdr);
    455 bool VBoxSvcClipboardFileDataIsValid(PVBOXCLIPBOARDFILEDATA pData, PVBOXCLIPBOARDDATAHDR pDataHdr);
     455bool VBoxSvcClipboardFileDataIsValid(PVBOXCLIPBOARDFILEDATA pFileData, PVBOXCLIPBOARDDATAHDR pDataHdr);
    456456# endif /* VBOX_WITH_SHARED_CLIPBOARD_URI_LIST */
    457457
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette