VirtualBox

Changeset 100394 in vbox for trunk/include/VBox/GuestHost


Ignore:
Timestamp:
Jul 5, 2023 4:21:48 PM (22 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
158134
Message:

Shared Clipboard: Also use the transfers callbacks for the Windows data object implementation. WIP. ​​bugref:9437

File:
1 edited

Legend:

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

    r100367 r100394  
    171171int SharedClipboardWinGetFormats(PSHCLWINCTX pCtx, PSHCLFORMATS pfFormats);
    172172
    173 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
    174 int SharedClipboardWinTransferGetRoots(PSHCLWINCTX pWinCtx, PSHCLTRANSFER pTransfer);
    175 int SharedClipboardWinTransferDropFilesToStringList(DROPFILES *pDropFiles, char **papszList, uint32_t *pcbList);
    176 int SharedClipboardWinTransferGetRootsFromClipboard(PSHCLWINCTX pWinCtx, PSHCLTRANSFER pTransfer);
    177 int SharedClipboardWinTransferCreateAndSetDataObject(PSHCLWINCTX pWinCtx, PSHCLCONTEXT pCtx, PSHCLCALLBACKS pCallbacks);
    178 #endif
    179 
    180173int SharedClipboardWinGetCFHTMLHeaderValue(const char *pszSrc, const char *pszOption, uint32_t *puValue);
    181174bool SharedClipboardWinIsCFHTML(const char *pszSource);
     
    189182
    190183int SharedClipboardWinClearAndAnnounceFormats(PSHCLWINCTX pWinCtx, SHCLFORMATS fFormats, HWND hWnd);
     184
    191185#ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
    192 int SharedClipboardWinTransferCreate(PSHCLWINCTX pWinCtx, PSHCLTRANSFER pTransfer);
    193 void SharedClipboardWinTransferDestroy(PSHCLWINCTX pWinCtx, PSHCLTRANSFER pTransfer);
    194 #endif
    195 
    196 # ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
    197186class SharedClipboardTransferList;
    198187#  ifndef FILEGROUPDESCRIPTOR
     
    200189#  endif
    201190
     191/**
     192 * Generic Windows class implementing IDataObject for Shared Clipboard data transfers.
     193 */
    202194class SharedClipboardWinDataObject : public IDataObject //, public IDataObjectAsyncCapability
    203195{
    204196public:
     197
     198    /**
     199     * Structure for keeping a data object callback context.
     200     */
     201    struct CALLBACKCTX
     202    {
     203        /** Pointer to the data object of this callback. */
     204        SharedClipboardWinDataObject *pThis;
     205        /** User-supplied pointer to more context data. */
     206        void                         *pvUser;
     207    };
     208    /** Pointer to a Shared Clipboard Windows data object callback table. */
     209    typedef CALLBACKCTX *PCALLBACKCTX;
     210
     211    /**
     212     * @name Shared Clipboard Windows data object callback table.
     213     */
     214    struct CALLBACKS
     215    {
     216        /**
     217         * Called by the data object if a transfer needs to be started.
     218         *
     219         * @returns VBox status code.
     220         * @param   pCbCtx          Pointer to callback context.
     221         */
     222        DECLCALLBACKMEMBER(int, pfnTransferStart, (PCALLBACKCTX pCbCtx));
     223    };
     224    /** Pointer to a Shared Clipboard Windows data object callback table. */
     225    typedef CALLBACKS *PCALLBACKS;
    205226
    206227    enum Status
     
    228249public:
    229250
    230     int Init(PSHCLCONTEXT pCtx, LPFORMATETC pFormatEtc = NULL, LPSTGMEDIUM pStgMed = NULL, ULONG cFormats = 0);
     251    int Init(PSHCLCONTEXT pCtx, SharedClipboardWinDataObject::PCALLBACKS pCallbacks, LPFORMATETC pFormatEtc = NULL, LPSTGMEDIUM pStgMed = NULL, ULONG cFormats = 0);
    231252    void Destroy(void);
    232253
     
    303324    /** Shared Clipboard context to use. */
    304325    PSHCLCONTEXT                m_pCtx;
    305     /** Callbacks table to use. */
    306     SHCLCALLBACKS               m_Callbacks;
    307326    /** The object's current status. */
    308327    Status                      m_enmStatus;
     328    /** Data object callback table to use. */
     329    CALLBACKS                   m_Callbacks;
     330    /** Data object callback table context to use. */
     331    CALLBACKCTX                 m_CallbackCtx;
    309332    /** The object's current reference count. */
    310333    LONG                        m_lRefCount;
     
    340363};
    341364
     365/**
     366 * Generic Windows class implementing IEnumFORMATETC for Shared Clipboard data transfers.
     367 */
    342368class SharedClipboardWinEnumFormatEtc : public IEnumFORMATETC
    343369{
     
    379405
    380406/**
    381  * Own IStream implementation to implement file-based clipboard operations
    382  * through HGCM. Needed on Windows hosts and guests.
     407 * Generic Windows class implementing IStream for Shared Clipboard data transfers.
    383408 */
    384409class SharedClipboardWinStreamImpl : public IStream
     
    454479    SharedClipboardWinDataObject *pDataObj;
    455480};
     481
     482int SharedClipboardWinTransferGetRoots(PSHCLWINCTX pWinCtx, PSHCLTRANSFER pTransfer);
     483int SharedClipboardWinTransferDropFilesToStringList(DROPFILES *pDropFiles, char **papszList, uint32_t *pcbList);
     484int SharedClipboardWinTransferGetRootsFromClipboard(PSHCLWINCTX pWinCtx, PSHCLTRANSFER pTransfer);
     485
     486int SharedClipboardWinTransferCreate(PSHCLWINCTX pWinCtx, PSHCLTRANSFER pTransfer);
     487void SharedClipboardWinTransferDestroy(PSHCLWINCTX pWinCtx, PSHCLTRANSFER pTransfer);
     488
     489int SharedClipboardWinTransferCreateAndSetDataObject(PSHCLWINCTX pWinCtx, PSHCLCONTEXT pCtx, SharedClipboardWinDataObject::PCALLBACKS pCallbacks);
    456490# endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS */
    457491#endif /* !VBOX_INCLUDED_GuestHost_SharedClipboard_win_h */
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