Changeset 99405 in vbox
- Timestamp:
- Apr 14, 2023 3:43:12 PM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 156855
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/GuestHost/SharedClipboard-transfers.h
r98103 r99405 59 59 60 60 struct SHCLTRANSFER; 61 /** Pointer to a single shared clipboard transfer 61 /** Pointer to a single shared clipboard transfer. */ 62 62 typedef struct SHCLTRANSFER *PSHCLTRANSFER; 63 63 … … 67 67 */ 68 68 69 /** No Shared Clipboard listing feature flags defined. */ 70 #define SHCL_TRANSFER_LIST_FEATURE_F_NONE UINT32_C(0) 71 /** Shared Clipboard feature flags valid mask. */ 72 #define SHCL_TRANSFER_LIST_FEATURE_F_VALID_MASK 0x0 73 69 74 /** Defines the maximum length (in chars) a Shared Clipboard transfer path can have. */ 70 #define SHCL_TRANSFER_PATH_MAX RTPATH_MAX 75 #define SHCL_TRANSFER_PATH_MAX RTPATH_MAX 76 /** Defines the default maximum transfer chunk size (in bytes) of a Shared Clipboard transfer. */ 77 #define SHCL_TRANSFER_DEFAULT_MAX_CHUNK_SIZE _64K 78 /** Defines the default maximum list handles a Shared Clipboard transfer can have. */ 79 #define SHCL_TRANSFER_DEFAULT_MAX_LIST_HANDLES _4K 80 /** Defines the default maximum object handles a Shared Clipboard transfer can have. */ 81 #define SHCL_TRANSFER_DEFAULT_MAX_OBJ_HANDLES _4K 71 82 72 83 /** … … 338 349 */ 339 350 SHCLFSOBJINFO ObjInfo; 340 } SHCLOBJOPENCREATEPARMS, *PSHCLOBJOPENCREATEPARMS; 351 } SHCLOBJOPENCREATEPARMS; 352 /** Pointer to Shared Clipboard object open/create parameters. */ 353 typedef SHCLOBJOPENCREATEPARMS *PSHCLOBJOPENCREATEPARMS; 341 354 342 355 /** … … 345 358 typedef struct _SHCLREPLY 346 359 { 347 /** Message type of type VBOX_SHCL_REPLYMSGTYPE_XXX. */360 /** Message type (of type VBOX_SHCL_REPLYMSGTYPE_TRANSFER_XXX). */ 348 361 uint32_t uType; 349 362 /** IPRT result of overall operation. Note: int vs. uint32! */ … … 351 364 union 352 365 { 366 /** For VBOX_SHCL_REPLYMSGTYPE_TRANSFER_STATUS. */ 353 367 struct 354 368 { 355 369 SHCLTRANSFERSTATUS uStatus; 356 370 } TransferStatus; 371 /** For VBOX_SHCL_REPLYMSGTYPE_LIST_OPEN. */ 357 372 struct 358 373 { 359 374 SHCLLISTHANDLE uHandle; 360 375 } ListOpen; 376 /** For VBOX_SHCL_REPLYMSGTYPE_LIST_CLOSE. */ 361 377 struct 362 378 { 363 379 SHCLLISTHANDLE uHandle; 364 380 } ListClose; 381 /** For VBOX_SHCL_REPLYMSGTYPE_OBJ_OPEN. */ 365 382 struct 366 383 { 367 384 SHCLOBJHANDLE uHandle; 368 385 } ObjOpen; 386 /** For VBOX_SHCL_REPLYMSGTYPE_OBJ_CLOSE. */ 369 387 struct 370 388 { … … 376 394 /** Payload size (in bytes). */ 377 395 uint32_t cbPayload; 378 } SHCLREPLY, *PSHCLREPLY; 396 } SHCLREPLY; 397 /** Pointer to a Shared Clipboard reply. */ 398 typedef SHCLREPLY *PSHCLREPLY; 379 399 380 400 struct _SHCLLISTENTRY; … … 395 415 /** Number of root list entries. */ 396 416 uint32_t cRoots; 397 } SHCLROOTLISTHDR, *PSHCLROOTLISTHDR; 417 } SHCLROOTLISTHDR; 418 /** Pointer to a Shared Clipboard root list header. */ 419 typedef SHCLROOTLISTHDR *PSHCLROOTLISTHDR; 398 420 399 421 /** … … 406 428 /** Root list entries. */ 407 429 SHCLROOTLISTENTRY *paEntries; 408 } SHCLROOTLIST, *PSHCLROOTLIST; 409 410 /** 411 * Structure for maintaining Shared Clipboard list open paramters. 430 } SHCLROOTLIST; 431 /** Pointer to a Shared Clipboard root list. */ 432 typedef SHCLROOTLIST *PSHCLROOTLIST; 433 434 /** 435 * Structure for maintaining Shared Clipboard list open parameters. 412 436 */ 413 437 typedef struct _SHCLLISTOPENPARMS … … 423 447 /** Listing path (absolute). If empty or NULL the listing's root path will be opened. */ 424 448 char *pszPath; 425 } SHCLLISTOPENPARMS, *PSHCLLISTOPENPARMS; 449 } SHCLLISTOPENPARMS; 450 /** Pointer to Shared Clipboard list open parameters. */ 451 typedef SHCLLISTOPENPARMS *PSHCLLISTOPENPARMS; 426 452 427 453 /** … … 430 456 typedef struct _SHCLLISTHDR 431 457 { 432 /** Feature flag(s) . Not being used atm. */458 /** Feature flag(s) of type SHCL_TRANSFER_LIST_FEATURE_F_XXX. */ 433 459 uint32_t fFeatures; 434 460 /** Total objects returned. */ … … 436 462 /** Total size (in bytes) returned. */ 437 463 uint64_t cbTotalSize; 438 } SHCLLISTHDR, *PSHCLLISTHDR; 464 } SHCLLISTHDR; 465 /** Pointer to a Shared Clipboard list header. */ 466 typedef SHCLLISTHDR *PSHCLLISTHDR; 439 467 440 468 /** … … 453 481 /** Data of the actual list entry. */ 454 482 void *pvInfo; 455 } SHCLLISTENTRY, *PSHCLLISTENTRY; 483 } SHCLLISTENTRY; 484 /** Pointer to a Shared Clipboard list entry. */ 485 typedef SHCLLISTENTRY *PSHCLLISTENTRY; 456 486 457 487 /** Maximum length (in UTF-8 characters) of a list entry name. */ … … 459 489 460 490 /** 461 * Structure for maintaining a Shared Clipboard list.491 * Structure for maintaining a generic Shared Clipboard list. 462 492 */ 463 493 typedef struct _SHCLLIST … … 467 497 /** List entries. */ 468 498 SHCLROOTLISTENTRY *paEntries; 469 } SHCLLIST, *PSHCLLIST; 499 } SHCLLIST; 500 /** Pointer to a Shared Clipboard transfer transfer list. */ 501 typedef SHCLLIST *PSHCLLIST; 470 502 471 503 /** … … 480 512 /** Size (in bytes) of data chunk. */ 481 513 uint32_t cbData; 482 } SHCLOBJDATACHUNK, *PSHCLOBJDATACHUNK; 514 } SHCLOBJDATACHUNK; 515 /** Pointer to a Shared Clipboard transfer object data chunk. */ 516 typedef SHCLOBJDATACHUNK *PSHCLOBJDATACHUNK; 483 517 484 518 /** … … 487 521 typedef struct _SHCLCLIENTTRANSFEROBJCTX 488 522 { 523 /** Pointer to the actual transfer object of this context. */ 489 524 SHCLTRANSFER *pTransfer; 525 /** Object handle of this transfer context. */ 490 526 SHCLOBJHANDLE uHandle; 491 } SHCLCLIENTTRANSFEROBJCTX, *PSHCLCLIENTTRANSFEROBJCTX; 527 } SHCLCLIENTTRANSFEROBJCTX; 528 /** Pointer to a Shared Clipboard transfer object context. */ 529 typedef SHCLCLIENTTRANSFEROBJCTX *PSHCLCLIENTTRANSFEROBJCTX; 492 530 493 531 typedef struct _SHCLTRANSFEROBJSTATE … … 495 533 /** How many bytes were processed (read / write) so far. */ 496 534 uint64_t cbProcessed; 497 } SHCLTRANSFEROBJSTATE, *PSHCLTRANSFEROBJSTATE; 498 535 } SHCLTRANSFEROBJSTATE; 536 /** Pointer to a Shared Clipboard transfer object state. */ 537 typedef SHCLTRANSFEROBJSTATE *PSHCLTRANSFEROBJSTATE; 538 539 /** 540 * Structure for a Shared Clipboard transfer object. 541 */ 499 542 typedef struct _SHCLTRANSFEROBJ 500 543 { 544 /** Handle of the object. */ 501 545 SHCLOBJHANDLE uHandle; 546 /** Absolute (local) path of the object. Source-style path. */ 502 547 char *pszPathAbs; 548 /** Object information. */ 503 549 SHCLFSOBJINFO objInfo; 550 /** Object type. */ 504 551 SHCLSOURCE enmSource; 552 /** Current state. */ 505 553 SHCLTRANSFEROBJSTATE State; 506 } SHCLTRANSFEROBJ, *PSHCLTRANSFEROBJ; 554 } SHCLTRANSFEROBJ; 555 /** Pointer to a Shared Clipboard transfer object. */ 556 typedef SHCLTRANSFEROBJ *PSHCLTRANSFEROBJ; 507 557 508 558 /** … … 525 575 /** 526 576 * Structure for keeping transfer list handle information. 577 * 527 578 * This is using to map own (local) handles to the underlying file system. 528 579 */ … … 549 600 } Local; 550 601 } u; 551 } SHCLLISTHANDLEINFO, *PSHCLLISTHANDLEINFO; 602 } SHCLLISTHANDLEINFO; 603 /** Pointer to a Shared Clipboard transfer list handle info. */ 604 typedef SHCLLISTHANDLEINFO *PSHCLLISTHANDLEINFO; 552 605 553 606 /** … … 565 618 /** Absolute local path of the object. */ 566 619 char *pszPathLocalAbs; 620 /** Data union, based on \a enmType. */ 567 621 union 568 622 { 569 /** Local data , based on enmType. */623 /** Local data. */ 570 624 struct 571 625 { … … 577 631 } Local; 578 632 } u; 579 } SHCLOBJHANDLEINFO, *PSHCLOBJHANDLEINFO; 580 581 /** 582 * Structure for keeping a single root list entry. 633 } SHCLOBJHANDLEINFO; 634 /** Pointer to a Shared Clipboard transfer object handle. */ 635 typedef SHCLOBJHANDLEINFO *PSHCLOBJHANDLEINFO; 636 637 /** 638 * Structure for keeping a single transfer root list entry. 583 639 */ 584 640 typedef struct _SHCLLISTROOT … … 588 644 /** Absolute path of entry. */ 589 645 char *pszPathAbs; 590 } SHCLLISTROOT, *PSHCLLISTROOT; 646 } SHCLLISTROOT; 647 /** Pointer to a Shared Clipboard transfer root list entry. */ 648 typedef SHCLLISTROOT *PSHCLLISTROOT; 591 649 592 650 /** … … 604 662 /** The transfer's source, seen from the perspective who created the transfer. */ 605 663 SHCLSOURCE enmSource; 606 } SHCLTRANSFERSTATE, *PSHCLTRANSFERSTATE; 664 } SHCLTRANSFERSTATE; 665 /** Pointer to a Shared Clipboard transfer state. */ 666 typedef SHCLTRANSFERSTATE *PSHCLTRANSFERSTATE; 607 667 608 668 /** 609 669 * Structure maintaining clipboard transfer provider context data. 610 * This is handed in to the provider interface implementations. 670 * 671 * This is handed-in to the provider interface implementations. 611 672 */ 612 673 typedef struct _SHCLTXPROVIDERCTX … … 618 679 /** Size (in bytes) of data at user pointer. */ 619 680 size_t cbUser; 620 } SHCLTXPROVIDERCTX, *PSHCLTXPROVIDERCTX; 681 } SHCLTXPROVIDERCTX; 682 /** Pointer to Shared Clipboard transfer provider context data. */ 683 typedef SHCLTXPROVIDERCTX *PSHCLTXPROVIDERCTX; 621 684 622 685 struct SHCLTRANSFERCTX; … … 644 707 DECLCALLBACKMEMBER(int, pfnObjWrite,(PSHCLTXPROVIDERCTX pCtx, SHCLOBJHANDLE hObj, void *pvData, uint32_t cbData, 645 708 uint32_t fFlags, uint32_t *pcbWritten)); 646 } SHCLTXPROVIDERIFACE, *PSHCLTXPROVIDERIFACE; 709 } SHCLTXPROVIDERIFACE; 710 /** Pointer to a Shared Clipboard transfer provider interface table. */ 711 typedef SHCLTXPROVIDERIFACE *PSHCLTXPROVIDERIFACE; 647 712 648 713 /** … … 659 724 /** Size (in bytes) of data at user pointer. */ 660 725 size_t cbUser; 661 } SHCLTXPROVIDERCREATIONCTX, *PSHCLTXPROVIDERCREATIONCTX; 726 } SHCLTXPROVIDERCREATIONCTX; 727 /** Pointer to a Shared Clipboard transfer provider creation context. */ 728 typedef SHCLTXPROVIDERCREATIONCTX *PSHCLTXPROVIDERCREATIONCTX; 662 729 663 730 /** … … 672 739 /** Size (in bytes) of data at user pointer. */ 673 740 size_t cbUser; 674 } SHCLTRANSFERCALLBACKCTX, *PSHCLTRANSFERCALLBACKCTX; 741 } SHCLTRANSFERCALLBACKCTX; 742 /** Pointer to a Shared Clipboard transfer callback context. */ 743 typedef SHCLTRANSFERCALLBACKCTX *PSHCLTRANSFERCALLBACKCTX; 675 744 676 745 /** … … 727 796 /** Size (in bytes) of data pointer at \a pvUser. */ 728 797 size_t cbUser; 729 } SHCLTRANSFERCALLBACKTABLE, *PSHCLTRANSFERCALLBACKTABLE; 798 } SHCLTRANSFERCALLBACKTABLE; 799 /** Pointer to a Shared Clipboard transfer callback table. */ 800 typedef SHCLTRANSFERCALLBACKTABLE *PSHCLTRANSFERCALLBACKTABLE; 730 801 731 802 /** … … 743 814 /** Thread cancelled flag / indicator. */ 744 815 volatile bool fCancelled; 745 } SHCLTRANSFERTHREAD, *PSHCLTRANSFERTHREAD; 816 } SHCLTRANSFERTHREAD; 817 /** Pointer to a Shared Clipboard transfer thread. */ 818 typedef SHCLTRANSFERTHREAD *PSHCLTRANSFERTHREAD; 746 819 747 820 /** … … 800 873 /** Critical section for serializing access. */ 801 874 RTCRITSECT CritSect; 802 } SHCLTRANSFER, *PSHCLTRANSFER; 875 } SHCLTRANSFER; 876 /** Pointer to a Shared Clipboard transfer. */ 877 typedef SHCLTRANSFER *PSHCLTRANSFER; 803 878 804 879 /** … … 813 888 /** Reporting flags. Currently unused and must be 0. */ 814 889 uint32_t fFlags; 815 } SHCLTRANSFERREPORT, *PSHCLTRANSFERREPORT; 890 } SHCLTRANSFERREPORT; 891 /** Pointer to Shared Clipboard transfer status. */ 892 typedef SHCLTRANSFERREPORT *PSHCLTRANSFERREPORT; 816 893 817 894 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP … … 831 908 RTHTTPSERVERRESP Resp; 832 909 } SHCLHTTPSERVER; 910 /** Pointer to Shared Clipboard HTTP server. */ 833 911 typedef SHCLHTTPSERVER *PSHCLHTTPSERVER; 834 912 … … 838 916 SHCLHTTPSERVER HttpServer; 839 917 } SHCLHTTPCONTEXT; 918 /** Pointer to Shared Clipboard HTTP transfer context. */ 840 919 typedef SHCLHTTPCONTEXT *PSHCLHTTPCONTEXT; 841 920 … … 885 964 void ShClTransferObjDataChunkFree(PSHCLOBJDATACHUNK pDataChunk); 886 965 966 int ShClTransferCreateEx(uint32_t cbMaxChunkSize, uint32_t cMaxListHandles, uint32_t cMaxObjHandles, PSHCLTRANSFER *ppTransfer); 887 967 int ShClTransferCreate(PSHCLTRANSFER *ppTransfer); 888 968 int ShClTransferInit(PSHCLTRANSFER pTransfer, SHCLTRANSFERDIR enmDir, SHCLSOURCE enmSource); -
trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp
r99403 r99405 1165 1165 1166 1166 /** 1167 * Creates a clipboard transfer. 1168 * 1169 * @returns VBox status code. 1167 * Creates a clipboard transfer, extended version. 1168 * 1169 * @returns VBox status code. 1170 * @param cbMaxChunkSize Maximum transfer chunk size (in bytes) to use. 1171 * @param cMaxListHandles Maximum list entries the transfer can have. 1172 * @param cMaxObjHandles Maximum transfer objects the transfer can have. 1170 1173 * @param ppTransfer Where to return the created clipboard transfer struct. 1171 1174 * Must be destroyed by ShClTransferDestroy(). 1172 1175 */ 1173 int ShClTransferCreate(PSHCLTRANSFER *ppTransfer) 1174 { 1176 int ShClTransferCreateEx(uint32_t cbMaxChunkSize, uint32_t cMaxListHandles, uint32_t cMaxObjHandles, 1177 PSHCLTRANSFER *ppTransfer) 1178 { 1179 1180 1175 1181 AssertPtrReturn(ppTransfer, VERR_INVALID_POINTER); 1176 1182 … … 1197 1203 pTransfer->uTimeoutMs = RT_MS_30SEC; 1198 1204 #endif 1199 pTransfer->cbMaxChunkSize = _64K; /** @todo Make this configurable. */1200 pTransfer->cMaxListHandles = _4K; /** @todo Ditto. */1201 pTransfer->cMaxObjHandles = _4K; /** @todo Ditto. */1205 pTransfer->cbMaxChunkSize = cbMaxChunkSize; 1206 pTransfer->cMaxListHandles = cMaxListHandles; 1207 pTransfer->cMaxObjHandles = cMaxObjHandles; 1202 1208 1203 1209 pTransfer->pvUser = NULL; … … 1226 1232 LogFlowFuncLeaveRC(rc); 1227 1233 return rc; 1234 } 1235 1236 /** 1237 * Creates a clipboard transfer with default settings. 1238 * 1239 * @returns VBox status code. 1240 * @param ppTransfer Where to return the created clipboard transfer struct. 1241 * Must be destroyed by ShClTransferDestroy(). 1242 */ 1243 int ShClTransferCreate(PSHCLTRANSFER *ppTransfer) 1244 { 1245 return ShClTransferCreateEx(SHCL_TRANSFER_DEFAULT_MAX_CHUNK_SIZE, 1246 SHCL_TRANSFER_DEFAULT_MAX_LIST_HANDLES, 1247 SHCL_TRANSFER_DEFAULT_MAX_OBJ_HANDLES, 1248 ppTransfer); 1228 1249 } 1229 1250
Note:
See TracChangeset
for help on using the changeset viewer.