VirtualBox

Changeset 80359 in vbox for trunk/include


Ignore:
Timestamp:
Aug 21, 2019 8:37:54 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
132824
Message:

Shared Clipboard/URI: Update.

Location:
trunk/include/VBox
Files:
3 edited

Legend:

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

    r80283 r80359  
    5353
    5454/** Specifies an invalid Shared Clipboard list handle. */
    55 #define SHAREDCLIPBOARDLISTHANDLE_INVALID        0
     55#define SHAREDCLIPBOARDLISTHANDLE_INVALID        ((SHAREDCLIPBOARDLISTHANDLE)~0LL)
    5656
    5757/** A Shared Clipboard object handle. */
     
    6161
    6262/** Specifies an invalid Shared Clipboard object handle. */
    63 #define SHAREDCLIPBOARDOBJHANDLE_INVALID         0
     63#define SHAREDCLIPBOARDOBJHANDLE_INVALID         ((SHAREDCLIPBOARDOBJHANDLE)~0LL)
    6464
    6565/** @} */
     
    332332typedef struct _VBOXCLIPBOARDOBJOPENCREATEPARMS
    333333{
     334    /** Path to object to open / create. */
    334335    char                       *pszPath;
     336    /** Size (in bytes) of path to to object. */
    335337    uint32_t                    cbPath;
    336338    /** SHAREDCLIPBOARD_OBJ_CF_* */
    337339    uint32_t                    fCreate;
    338340    /**
    339      * Attributes of object to create and
     341     * Attributes of object to open/create and
    340342     * returned actual attributes of opened/created object.
    341343     */
     
    363365            SHAREDCLIPBOARDOBJHANDLE uHandle;
    364366        } ObjOpen;
     367        struct
     368        {
     369            SHAREDCLIPBOARDOBJHANDLE uHandle;
     370        } ObjClose;
    365371    } u;
    366372    /** Pointer to optional payload. */
     
    465471} VBOXCLIPBOARDLIST, *PVBOXCLIPBOARDLIST;
    466472
    467 /**
    468  * Structure for a Shared Clipboard object header.
    469  */
    470 typedef struct _VBOXCLIPBOARDOBJHDR
    471 {
    472     /** Header type. Currently not being used. */
    473     uint32_t enmType;
    474 } VBOXCLIPBOARDOBJHDR, *PVBOXCLIPBOARDOBJHDR;
     473typedef struct _VBOXCLIPBOARDOBJDATACHUNK
     474{
     475    uint64_t  uHandle;
     476    void     *pvData;
     477    uint32_t  cbData;
     478} VBOXCLIPBOARDOBJDATACHUNK, *PVBOXCLIPBOARDOBJDATACHUNK;
    475479
    476480/**
     
    723727typedef std::map<uint16_t, SHAREDCLIPBOARDURITRANSFEREVENT *> SharedClipboardURITransferEventMap;
    724728
     729/**
     730 * Enumeration for specifying a Shared Clipboard object type.
     731 */
     732typedef enum _SHAREDCLIPBOARDURIOBJTYPE
     733{
     734    /** Invalid object type. */
     735    SHAREDCLIPBOARDURIOBJTYPE_INVALID = 0,
     736    /** Object is a directory. */
     737    SHAREDCLIPBOARDURIOBJTYPE_DIRECTORY,
     738    /** Object is a file. */
     739    SHAREDCLIPBOARDURIOBJTYPE_FILE,
     740    /** Object is a symbolic link. */
     741    SHAREDCLIPBOARDURIOBJTYPE_SYMLINK,
     742    /** The usual 32-bit hack. */
     743    SHAREDCLIPBOARDURIOBJTYPE_32BIT_SIZE_HACK = 0x7fffffff
     744} SHAREDCLIPBOARDURIOBJTYPE;
     745
     746/**
     747 * Structure for keeping URI list handle information.
     748 * This is using to map own (local) handles to the underlying file system.
     749 */
    725750typedef struct _SHAREDCLIPBOARDURILISTHANDLEINFO
    726751{
    727     VBOXCLIPBOARDLISTOPENPARMS OpenParms;
    728     RTFMODE                    fMode;
     752    /** Type of list handle. */
     753    SHAREDCLIPBOARDURIOBJTYPE enmType;
     754    /** Absolute local path of the list object. */
     755    char                     *pszPathLocalAbs;
    729756    union
    730757    {
     758        /** Local data, based on enmType. */
    731759        struct
    732760        {
    733761            union
    734762            {
    735                 RTDIR  hDirRoot;
     763                RTDIR  hDir;
    736764                RTFILE hFile;
    737765            };
     
    740768} SHAREDCLIPBOARDURILISTHANDLEINFO, *PSHAREDCLIPBOARDURILISTHANDLEINFO;
    741769
    742 typedef struct _SHAREDCLIPBOARDOBJHANDLEINFO
    743 {
     770/** Map of URI list handles.
     771 *  The key specifies the list handle. */
     772typedef std::map<SHAREDCLIPBOARDLISTHANDLE, SHAREDCLIPBOARDURILISTHANDLEINFO *> SharedClipboardURIListMap;
     773
     774/**
     775 * Structure for keeping URI object handle information.
     776 * This is using to map own (local) handles to the underlying file system.
     777 */
     778typedef struct _SHAREDCLIPBOARDURIOBJHANDLEINFO
     779{
     780    /** Type of object handle. */
     781    SHAREDCLIPBOARDURIOBJTYPE enmType;
     782    /** Absolute local path of the object. */
     783    char                     *pszPathLocalAbs;
    744784    union
    745785    {
     786        /** Local data, based on enmType. */
    746787        struct
    747788        {
    748             RTDIR hDirRoot;
     789            union
     790            {
     791                RTDIR  hDir;
     792                RTFILE hFile;
     793            };
    749794        } Local;
    750795    } u;
    751796} SHAREDCLIPBOARDURIOBJHANDLEINFO, *PSHAREDCLIPBOARDURIOBJHANDLEINFO;
    752797
    753 /** Map of URI list handles.
    754  *  The key specifies the list handle. */
    755 typedef std::map<SHAREDCLIPBOARDLISTHANDLE, SHAREDCLIPBOARDURILISTHANDLEINFO *> SharedClipboardURIListMap;
    756 
    757798/** Map of URI object handles.
    758799 *  The key specifies the object handle. */
    759 typedef std::map<SHAREDCLIPBOARDOBJHANDLE, SHAREDCLIPBOARDURILISTHANDLEINFO *> SharedClipboardURIObjMap;
     800typedef std::map<SHAREDCLIPBOARDOBJHANDLE, SHAREDCLIPBOARDURIOBJHANDLEINFO *> SharedClipboardURIObjMap;
    760801
    761802/**
     
    796837 * This is handed in to the provider implementation callbacks.
    797838 */
    798 typedef struct _SHAREDCLIPBOARDPROVIDERCTX
     839    typedef struct _SHAREDCLIPBOARDPROVIDERCTX
    799840{
    800841    /** Pointer to the related URI transfer. */
     
    958999    /** Timeout (in ms) for waiting of events. Default is 30s. */
    9591000    RTMSINTERVAL                        uTimeoutMs;
     1001    /** Absolute path to root entries. */
     1002    char                               *pszPathRootAbs;
    9601003    /** Maximum data chunk size (in bytes) to transfer. Default is 64K. */
    9611004    uint32_t                            cbMaxChunkSize;
     
    9631006    SharedClipboardURITransferEventMap *pMapEvents;
    9641007    /** Next upcoming list handle. */
    965     uint64_t                            uListHandleNext;
     1008    SHAREDCLIPBOARDLISTHANDLE           uListHandleNext;
    9661009    /** Map of all lists related to this transfer. */
    9671010    SharedClipboardURIListMap          *pMapLists;
     
    9691012    SharedClipboardURIListRootEntries   lstRootEntries;
    9701013    /** Next upcoming object handle. */
    971     uint64_t                            uObjHandleNext;
     1014    SHAREDCLIPBOARDOBJHANDLE            uObjHandleNext;
    9721015    /** Next upcoming event ID.
    9731016     *  0 is reserved for invalid event IDs. */
     
    10151058bool SharedClipboardURIObjCtxIsValid(PSHAREDCLIPBOARDCLIENTURIOBJCTX pObjCtx);
    10161059
     1060int SharedClipboardURIObjectOpenParmsInit(PVBOXCLIPBOARDOBJOPENCREATEPARMS pParms);
     1061int SharedClipboardURIObjectOpenParmsCopy(PVBOXCLIPBOARDOBJOPENCREATEPARMS pParmsDst, PVBOXCLIPBOARDOBJOPENCREATEPARMS pParmsSrc);
     1062void SharedClipboardURIObjectOpenParmsDestroy(PVBOXCLIPBOARDOBJOPENCREATEPARMS pParms);
     1063
    10171064int SharedClipboardURIObjectOpen(PSHAREDCLIPBOARDURITRANSFER pTransfer, PVBOXCLIPBOARDOBJOPENCREATEPARMS pOpenCreateParms,
    10181065                                 PSHAREDCLIPBOARDOBJHANDLE phObj);
    1019 int SharedClipboardURIObjectClose(SHAREDCLIPBOARDOBJHANDLE hObj);
    1020 int SharedClipboardURIObjectRead(SHAREDCLIPBOARDOBJHANDLE hObj, void *pvBuf, uint32_t cbBuf, uint32_t *pcbRead, uint32_t fFlags);
    1021 int SharedClipboardURIObjectWrite(SHAREDCLIPBOARDOBJHANDLE hObj, void *pvBuf, uint32_t cbBuf, uint32_t *pcbWritten, uint32_t fFlags);
    1022 int SharedClipboardURIObjectQueryInfo(SHAREDCLIPBOARDOBJHANDLE hObj, PSHAREDCLIPBOARDFSOBJINFO pObjInfo);
     1066int SharedClipboardURIObjectClose(PSHAREDCLIPBOARDURITRANSFER pTransfer, SHAREDCLIPBOARDOBJHANDLE hObj);
     1067int SharedClipboardURIObjectRead(PSHAREDCLIPBOARDURITRANSFER pTransfer, SHAREDCLIPBOARDOBJHANDLE hObj, void *pvBuf, uint32_t cbBuf, uint32_t *pcbRead, uint32_t fFlags);
     1068int SharedClipboardURIObjectWrite(PSHAREDCLIPBOARDURITRANSFER pTransfer, SHAREDCLIPBOARDOBJHANDLE hObj, void *pvBuf, uint32_t cbBuf, uint32_t *pcbWritten, uint32_t fFlags);
     1069
     1070PVBOXCLIPBOARDOBJDATACHUNK SharedClipboardURIObjectDataChunkDup(PVBOXCLIPBOARDOBJDATACHUNK pDataChunk);
     1071void SharedClipboardURIObjectDataChunkDestroy(PVBOXCLIPBOARDOBJDATACHUNK pDataChunk);
     1072void SharedClipboardURIObjectDataChunkFree(PVBOXCLIPBOARDOBJDATACHUNK pDataChunk);
    10231073
    10241074int SharedClipboardURITransferCreate(SHAREDCLIPBOARDURITRANSFERDIR enmDir, SHAREDCLIPBOARDSOURCE enmSource,
     
    10461096int SharedClipboardURITransferSetInterface(PSHAREDCLIPBOARDURITRANSFER pTransfer,
    10471097                                           PSHAREDCLIPBOARDPROVIDERCREATIONCTX pCreationCtx);
    1048 int SharedClipboardURILTransferSetRoots(PSHAREDCLIPBOARDURITRANSFER pTransfer, const char *papszRoots, size_t cbRoots);
     1098int SharedClipboardURILTransferSetRoots(PSHAREDCLIPBOARDURITRANSFER pTransfer, const char *pszRoots, size_t cbRoots);
    10491099void SharedClipboardURITransferReset(PSHAREDCLIPBOARDURITRANSFER pTransfer);
    10501100SharedClipboardArea *SharedClipboardURITransferGetArea(PSHAREDCLIPBOARDURITRANSFER pTransfer);
  • trunk/include/VBox/HostServices/VBoxClipboardSvc.h

    r80320 r80359  
    585585    /** uint32_t in/out: Open / Create flags of type SHAREDCLIPBOARD_OBJ_CF_. */
    586586    HGCMFunctionParameter fCreate;
    587     /** pointer, in/out: SHAREDCLIPBOARDFSOBJINFO. */
    588     HGCMFunctionParameter objInfo;
    589587} VBoxClipboardObjOpenMsg;
    590588
    591 #define VBOX_SHARED_CLIPBOARD_CPARMS_OBJ_OPEN 4
     589#define VBOX_SHARED_CLIPBOARD_CPARMS_OBJ_OPEN 5
    592590
    593591typedef struct _VBoxClipboardObjCloseMsg
     
    611609    /** uint32_t, in: How many bytes to read. */
    612610    HGCMFunctionParameter cbToRead;
    613     /** uint32_t, in: Read flags. Currently unused. */
     611    /** uint32_t, in: Read flags. Currently unused and must be 0. */
    614612    HGCMFunctionParameter fRead;
    615613} VBoxClipboardObjReadReqParms;
     
    622620} VBoxClipboardObjReadReqMsg;
    623621
    624 #define VBOX_SHARED_CLIPBOARD_CPARMS_OBJ_READ_REQ 3
     622#define VBOX_SHARED_CLIPBOARD_CPARMS_OBJ_READ_REQ 4
    625623
    626624/**
  • trunk/include/VBox/VBoxGuestLib.h

    r80283 r80359  
    596596    /** IN: Protocol version to use. */
    597597    uint32_t uProtocol;
     598    /** IN: Maximum chunk size (in bytes). */
     599    uint32_t cbChunkSize;
    598600    /** OUT: Number of parameters retrieved. */
    599601    uint32_t uNumParms;
     
    644646
    645647#  ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST
     648VBGLR3DECL(int)     VbglR3ClipboardConnectEx(PVBGLR3SHCLCMDCTX pCtx);
     649VBGLR3DECL(int)     VbglR3ClipboardDisconnectEx(PVBGLR3SHCLCMDCTX pCtx);
    646650VBGLR3DECL(int)     VbglR3ClipboardEventGetNext(PVBGLR3SHCLCMDCTX pCtx, PSHAREDCLIPBOARDURITRANSFER pTransfer,
    647651                                                PVBGLR3CLIPBOARDEVENT *ppEvent);
     
    675679VBGLR3DECL(int)     VbglR3ClipboardObjReadRecv(PVBGLR3SHCLCMDCTX pCtx, PSHAREDCLIPBOARDOBJHANDLE phObj, uint32_t pcbToRead,
    676680                                               uint32_t *pfFlags);
    677 VBGLR3DECL(int)     VbglR3ClipboardObjReadSend(PVBGLR3SHCLCMDCTX pCtx, SHAREDCLIPBOARDOBJHANDLE hObj, void *pvBuf, uint32_t cbBuf,
     681VBGLR3DECL(int)     VbglR3ClipboardObjRead(PVBGLR3SHCLCMDCTX pCtx, SHAREDCLIPBOARDOBJHANDLE hObj, void *pvBuf, uint32_t cbBuf,
    678682                                               uint32_t *pcbRead);
    679 VBGLR3DECL(int)     VbglR3ClipboardObjWriteSend(PVBGLR3SHCLCMDCTX pCtx, SHAREDCLIPBOARDOBJHANDLE hObj, void *pvBuf, uint32_t cbBuf,
    680                                                 uint32_t *pcbWritten);
     683VBGLR3DECL(int)     VbglR3ClipboardObjWrite(PVBGLR3SHCLCMDCTX pCtx, SHAREDCLIPBOARDOBJHANDLE hObj, void *pvBuf, uint32_t cbBuf,
     684                                            uint32_t *pcbWritten);
    681685
    682686VBGLR3DECL(int)     VbglR3ClipboardWriteError(HGCMCLIENTID idClient, int rcErr);
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