VirtualBox

source: vbox/trunk/include/VBox/shflsvc.h@ 21217

Last change on this file since 21217 was 21217, checked in by vboxsync, 15 years ago

include/VBox/*.h: Mark which components the header files relate to.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 22.2 KB
Line 
1/** @file
2 * Shared Folders: Common header for host service and guest clients. (ADD,HSvc)
3 */
4
5/*
6 * Copyright (C) 2006-2007 Sun Microsystems, Inc.
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * The contents of this file may alternatively be used under the terms
17 * of the Common Development and Distribution License Version 1.0
18 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19 * VirtualBox OSE distribution, in which case the provisions of the
20 * CDDL are applicable instead of those of the GPL.
21 *
22 * You may elect to license modified versions of this file under the
23 * terms and conditions of either the GPL or the CDDL or both.
24 *
25 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
26 * Clara, CA 95054 USA or visit http://www.sun.com if you need
27 * additional information or have any questions.
28 */
29
30#ifndef ___VBox_shflsvc_h
31#define ___VBox_shflsvc_h
32
33#include <VBox/types.h>
34#include <VBox/VBoxGuest.h>
35#include <VBox/hgcmsvc.h>
36#include <iprt/fs.h>
37
38
39/** @name Some bit flag manipulation macros.
40 * @{ */
41#ifndef BIT_FLAG
42#define BIT_FLAG(__Field,__Flag) ((__Field) & (__Flag))
43#endif
44
45#ifndef BIT_FLAG_SET
46#define BIT_FLAG_SET(__Field,__Flag) ((__Field) |= (__Flag))
47#endif
48
49#ifndef BIT_FLAG_CLEAR
50#define BIT_FLAG_CLEAR(__Field,__Flag) ((__Field) &= ~(__Flag))
51#endif
52/** @} */
53
54
55/**
56 * Structures shared between guest and the service
57 * can be relocated and use offsets to point to variable
58 * length parts.
59 */
60
61/**
62 * Shared folders protocol works with handles.
63 * Before doing any action on a file system object,
64 * one have to obtain the object handle via a SHFL_FN_CREATE
65 * request. A handle must be closed with SHFL_FN_CLOSE.
66 */
67
68/** Shared Folders service functions. (guest)
69 * @{
70 */
71
72/** Query mappings changes. */
73#define SHFL_FN_QUERY_MAPPINGS (1)
74/** Query mappings changes. */
75#define SHFL_FN_QUERY_MAP_NAME (2)
76/** Open/create object. */
77#define SHFL_FN_CREATE (3)
78/** Close object handle. */
79#define SHFL_FN_CLOSE (4)
80/** Read object content. */
81#define SHFL_FN_READ (5)
82/** Write new object content. */
83#define SHFL_FN_WRITE (6)
84/** Lock/unlock a range in the object. */
85#define SHFL_FN_LOCK (7)
86/** List object content. */
87#define SHFL_FN_LIST (8)
88/** Query/set object information. */
89#define SHFL_FN_INFORMATION (9)
90/** Remove object */
91#define SHFL_FN_REMOVE (11)
92/** Map folder (legacy) */
93#define SHFL_FN_MAP_FOLDER_OLD (12)
94/** Unmap folder */
95#define SHFL_FN_UNMAP_FOLDER (13)
96/** Rename object (possibly moving it to another directory) */
97#define SHFL_FN_RENAME (14)
98/** Flush file */
99#define SHFL_FN_FLUSH (15)
100/** @todo macl, a description, please. */
101#define SHFL_FN_SET_UTF8 (16)
102/** Map folder */
103#define SHFL_FN_MAP_FOLDER (17)
104
105/** @} */
106
107/** Shared Folders service functions. (host)
108 * @{
109 */
110
111/** Add shared folder mapping. */
112#define SHFL_FN_ADD_MAPPING (1)
113/** Remove shared folder mapping. */
114#define SHFL_FN_REMOVE_MAPPING (2)
115/** Set the led status light address */
116#define SHFL_FN_SET_STATUS_LED (3)
117
118/** @} */
119
120/** Root handle for a mapping. Root handles are unique.
121 * @note
122 * Function parameters structures consider
123 * the root handle as 32 bit value. If the typedef
124 * will be changed, then function parameters must be
125 * changed accordingly. All those parameters are marked
126 * with SHFLROOT in comments.
127 */
128typedef uint32_t SHFLROOT;
129
130#define SHFL_ROOT_NIL ((SHFLROOT)~0)
131
132
133/** A shared folders handle for an opened object. */
134typedef uint64_t SHFLHANDLE;
135
136#define SHFL_HANDLE_NIL ((SHFLHANDLE)~0LL)
137#define SHFL_HANDLE_ROOT ((SHFLHANDLE)0LL)
138
139/** Hardcoded maximum number of shared folder mapping available to the guest. */
140#define SHFL_MAX_MAPPINGS (64)
141
142/** Shared Folders strings. They can be either UTF8 or Unicode.
143 * @{
144 */
145
146typedef struct _SHFLSTRING
147{
148 /** Size of string String buffer in bytes. */
149 uint16_t u16Size;
150
151 /** Length of string without trailing nul in bytes. */
152 uint16_t u16Length;
153
154 /** UTF8 or Unicode16 string. Nul terminated. */
155 union
156 {
157 uint8_t utf8[1];
158 uint16_t ucs2[1];
159 } String;
160} SHFLSTRING;
161
162typedef SHFLSTRING *PSHFLSTRING;
163
164/** Calculate size of the string. */
165DECLINLINE(uint32_t) ShflStringSizeOfBuffer (PSHFLSTRING pString)
166{
167 return pString? sizeof (SHFLSTRING) - sizeof (pString->String) + pString->u16Size: 0;
168}
169
170DECLINLINE(uint32_t) ShflStringLength (PSHFLSTRING pString)
171{
172 return pString? pString->u16Length: 0;
173}
174
175DECLINLINE(PSHFLSTRING) ShflStringInitBuffer(void *pvBuffer, uint32_t u32Size)
176{
177 PSHFLSTRING pString = NULL;
178
179 uint32_t u32HeaderSize = sizeof (SHFLSTRING) - sizeof (pString->String);
180
181 /* Check that the buffer size is big enough to hold a zero sized string
182 * and is not too big to fit into 16 bit variables.
183 */
184 if (u32Size >= u32HeaderSize && u32Size - u32HeaderSize <= 0xFFFF)
185 {
186 pString = (PSHFLSTRING)pvBuffer;
187 pString->u16Size = u32Size - u32HeaderSize;
188 pString->u16Length = 0;
189 }
190
191 return pString;
192}
193
194/** @} */
195
196
197/** Result of an open/create request.
198 * Along with handle value the result code
199 * identifies what has happened while
200 * trying to open the object.
201 */
202typedef enum _SHFLCREATERESULT
203{
204 SHFL_NO_RESULT,
205 /** Specified path does not exist. */
206 SHFL_PATH_NOT_FOUND,
207 /** Path to file exists, but the last component does not. */
208 SHFL_FILE_NOT_FOUND,
209 /** File already exists and either has been opened or not. */
210 SHFL_FILE_EXISTS,
211 /** New file was created. */
212 SHFL_FILE_CREATED,
213 /** Existing file was replaced or overwritten. */
214 SHFL_FILE_REPLACED
215} SHFLCREATERESULT;
216
217
218/** Open/create flags.
219 * @{
220 */
221
222/** No flags. Initialization value. */
223#define SHFL_CF_NONE (0x00000000)
224
225/** Lookup only the object, do not return a handle. All other flags are ignored. */
226#define SHFL_CF_LOOKUP (0x00000001)
227
228/** Open parent directory of specified object.
229 * Useful for the corresponding Windows FSD flag
230 * and for opening paths like \\dir\\*.* to search the 'dir'.
231 * @todo possibly not needed???
232 */
233#define SHFL_CF_OPEN_TARGET_DIRECTORY (0x00000002)
234
235/** Create/open a directory. */
236#define SHFL_CF_DIRECTORY (0x00000004)
237
238/** Open/create action to do if object exists
239 * and if the object does not exists.
240 * REPLACE file means atomically DELETE and CREATE.
241 * OVERWRITE file means truncating the file to 0 and
242 * setting new size.
243 * When opening an existing directory REPLACE and OVERWRITE
244 * actions are considered invalid, and cause returning
245 * FILE_EXISTS with NIL handle.
246 */
247#define SHFL_CF_ACT_MASK_IF_EXISTS (0x000000F0)
248#define SHFL_CF_ACT_MASK_IF_NEW (0x00000F00)
249
250/** What to do if object exists. */
251#define SHFL_CF_ACT_OPEN_IF_EXISTS (0x00000000)
252#define SHFL_CF_ACT_FAIL_IF_EXISTS (0x00000010)
253#define SHFL_CF_ACT_REPLACE_IF_EXISTS (0x00000020)
254#define SHFL_CF_ACT_OVERWRITE_IF_EXISTS (0x00000030)
255
256/** What to do if object does not exist. */
257#define SHFL_CF_ACT_CREATE_IF_NEW (0x00000000)
258#define SHFL_CF_ACT_FAIL_IF_NEW (0x00000100)
259
260/** Read/write requested access for the object. */
261#define SHFL_CF_ACCESS_MASK_RW (0x00003000)
262
263/** No access requested. */
264#define SHFL_CF_ACCESS_NONE (0x00000000)
265/** Read access requested. */
266#define SHFL_CF_ACCESS_READ (0x00001000)
267/** Write access requested. */
268#define SHFL_CF_ACCESS_WRITE (0x00002000)
269/** Read/Write access requested. */
270#define SHFL_CF_ACCESS_READWRITE (SHFL_CF_ACCESS_READ | SHFL_CF_ACCESS_WRITE)
271
272/** Requested share access for the object. */
273#define SHFL_CF_ACCESS_MASK_DENY (0x0000C000)
274
275/** Allow any access. */
276#define SHFL_CF_ACCESS_DENYNONE (0x00000000)
277/** Do not allow read. */
278#define SHFL_CF_ACCESS_DENYREAD (0x00004000)
279/** Do not allow write. */
280#define SHFL_CF_ACCESS_DENYWRITE (0x00008000)
281/** Do not allow access. */
282#define SHFL_CF_ACCESS_DENYALL (SHFL_CF_ACCESS_DENYREAD | SHFL_CF_ACCESS_DENYWRITE)
283
284/** Requested access to attributes of the object. */
285#define SHFL_CF_ACCESS_MASK_ATTR (0x00030000)
286
287/** No access requested. */
288#define SHFL_CF_ACCESS_ATTR_NONE (0x00000000)
289/** Read access requested. */
290#define SHFL_CF_ACCESS_ATTR_READ (0x00010000)
291/** Write access requested. */
292#define SHFL_CF_ACCESS_ATTR_WRITE (0x00020000)
293/** Read/Write access requested. */
294#define SHFL_CF_ACCESS_ATTR_READWRITE (SHFL_CF_ACCESS_READ | SHFL_CF_ACCESS_WRITE)
295
296/** @} */
297
298#pragma pack(1)
299typedef struct _SHFLCREATEPARMS
300{
301 /* Returned handle of opened object. */
302 SHFLHANDLE Handle;
303
304 /* Returned result of the operation */
305 SHFLCREATERESULT Result;
306
307 /* SHFL_CF_* */
308 uint32_t CreateFlags;
309
310 /* Attributes of object to create and
311 * returned actual attributes of opened/created object.
312 */
313 RTFSOBJINFO Info;
314
315} SHFLCREATEPARMS;
316#pragma pack()
317
318typedef SHFLCREATEPARMS *PSHFLCREATEPARMS;
319
320
321/** Shared Folders mappings.
322 * @{
323 */
324
325/** The mapping has been added since last query. */
326#define SHFL_MS_NEW (1)
327/** The mapping has been deleted since last query. */
328#define SHFL_MS_DELETED (2)
329
330typedef struct _SHFLMAPPING
331{
332 /** Mapping status. */
333 uint32_t u32Status;
334 /** Root handle. */
335 SHFLROOT root;
336} SHFLMAPPING;
337
338typedef SHFLMAPPING *PSHFLMAPPING;
339
340/** @} */
341
342/** Shared Folder directory information
343 * @{
344 */
345
346typedef struct _SHFLDIRINFO
347{
348 /** Full information about the object. */
349 RTFSOBJINFO Info;
350 /** The length of the short field (number of RTUTF16 chars).
351 * It is 16-bit for reasons of alignment. */
352 uint16_t cucShortName;
353 /** The short name for 8.3 compatability.
354 * Empty string if not available.
355 */
356 RTUTF16 uszShortName[14];
357 /** @todo malc, a description, please. */
358 SHFLSTRING name;
359} SHFLDIRINFO, *PSHFLDIRINFO;
360
361typedef struct _SHFLVOLINFO
362{
363 RTFOFF ullTotalAllocationBytes;
364 RTFOFF ullAvailableAllocationBytes;
365 uint32_t ulBytesPerAllocationUnit;
366 uint32_t ulBytesPerSector;
367 uint32_t ulSerial;
368 RTFSPROPERTIES fsProperties;
369} SHFLVOLINFO, *PSHFLVOLINFO;
370
371/** @} */
372
373/** Function parameter structures.
374 * @{
375 */
376
377/**
378 * SHFL_FN_QUERY_MAPPINGS
379 */
380
381#define SHFL_MF_UCS2 (0x00000000)
382/** Guest uses UTF8 strings, if not set then the strings are unicode (UCS2). */
383#define SHFL_MF_UTF8 (0x00000001)
384
385/** Type of guest system. For future system dependent features. */
386#define SHFL_MF_SYSTEM_MASK (0x0000FF00)
387#define SHFL_MF_SYSTEM_NONE (0x00000000)
388#define SHFL_MF_SYSTEM_WINDOWS (0x00000100)
389#define SHFL_MF_SYSTEM_LINUX (0x00000200)
390
391/** Parameters structure. */
392typedef struct _VBoxSFQueryMappings
393{
394 VBoxGuestHGCMCallInfo callInfo;
395
396 /** 32bit, in:
397 * Flags describing various client needs.
398 */
399 HGCMFunctionParameter flags;
400
401 /** 32bit, in/out:
402 * Number of mappings the client expects.
403 * This is the number of elements in the
404 * mappings array.
405 */
406 HGCMFunctionParameter numberOfMappings;
407
408 /** pointer, in/out:
409 * Points to array of SHFLMAPPING structures.
410 */
411 HGCMFunctionParameter mappings;
412
413} VBoxSFQueryMappings;
414
415/** Number of parameters */
416#define SHFL_CPARMS_QUERY_MAPPINGS (3)
417
418
419
420/**
421 * SHFL_FN_QUERY_MAP_NAME
422 */
423
424/** Parameters structure. */
425typedef struct _VBoxSFQueryMapName
426{
427 VBoxGuestHGCMCallInfo callInfo;
428
429 /** 32bit, in: SHFLROOT
430 * Root handle of the mapping which name is queried.
431 */
432 HGCMFunctionParameter root;
433
434 /** pointer, in/out:
435 * Points to SHFLSTRING buffer.
436 */
437 HGCMFunctionParameter name;
438
439} VBoxSFQueryMapName;
440
441/** Number of parameters */
442#define SHFL_CPARMS_QUERY_MAP_NAME (2)
443
444/**
445 * SHFL_FN_MAP_FOLDER_OLD
446 */
447
448/** Parameters structure. */
449typedef struct _VBoxSFMapFolder_Old
450{
451 VBoxGuestHGCMCallInfo callInfo;
452
453 /** pointer, in:
454 * Points to SHFLSTRING buffer.
455 */
456 HGCMFunctionParameter path;
457
458 /** pointer, out: SHFLROOT
459 * Root handle of the mapping which name is queried.
460 */
461 HGCMFunctionParameter root;
462
463 /** pointer, in: RTUTF16
464 * Path delimiter
465 */
466 HGCMFunctionParameter delimiter;
467
468} VBoxSFMapFolder_Old;
469
470/** Number of parameters */
471#define SHFL_CPARMS_MAP_FOLDER_OLD (3)
472
473/**
474 * SHFL_FN_MAP_FOLDER
475 */
476
477/** Parameters structure. */
478typedef struct _VBoxSFMapFolder
479{
480 VBoxGuestHGCMCallInfo callInfo;
481
482 /** pointer, in:
483 * Points to SHFLSTRING buffer.
484 */
485 HGCMFunctionParameter path;
486
487 /** pointer, out: SHFLROOT
488 * Root handle of the mapping which name is queried.
489 */
490 HGCMFunctionParameter root;
491
492 /** pointer, in: RTUTF16
493 * Path delimiter
494 */
495 HGCMFunctionParameter delimiter;
496
497 /** pointer, in: SHFLROOT
498 * Case senstive flag
499 */
500 HGCMFunctionParameter fCaseSensitive;
501
502} VBoxSFMapFolder;
503
504/** Number of parameters */
505#define SHFL_CPARMS_MAP_FOLDER (4)
506
507/**
508 * SHFL_FN_UNMAP_FOLDER
509 */
510
511/** Parameters structure. */
512typedef struct _VBoxSFUnmapFolder
513{
514 VBoxGuestHGCMCallInfo callInfo;
515
516 /** pointer, in: SHFLROOT
517 * Root handle of the mapping which name is queried.
518 */
519 HGCMFunctionParameter root;
520
521} VBoxSFUnmapFolder;
522
523/** Number of parameters */
524#define SHFL_CPARMS_UNMAP_FOLDER (1)
525
526
527/**
528 * SHFL_FN_CREATE
529 */
530
531/** Parameters structure. */
532typedef struct _VBoxSFCreate
533{
534 VBoxGuestHGCMCallInfo callInfo;
535
536 /** pointer, in: SHFLROOT
537 * Root handle of the mapping which name is queried.
538 */
539 HGCMFunctionParameter root;
540
541 /** pointer, in:
542 * Points to SHFLSTRING buffer.
543 */
544 HGCMFunctionParameter path;
545
546 /** pointer, in/out:
547 * Points to SHFLCREATEPARMS buffer.
548 */
549 HGCMFunctionParameter parms;
550
551} VBoxSFCreate;
552
553/** Number of parameters */
554#define SHFL_CPARMS_CREATE (3)
555
556
557/**
558 * SHFL_FN_CLOSE
559 */
560
561/** Parameters structure. */
562typedef struct _VBoxSFClose
563{
564 VBoxGuestHGCMCallInfo callInfo;
565
566 /** pointer, in: SHFLROOT
567 * Root handle of the mapping which name is queried.
568 */
569 HGCMFunctionParameter root;
570
571
572 /** value64, in:
573 * SHFLHANDLE of object to close.
574 */
575 HGCMFunctionParameter handle;
576
577} VBoxSFClose;
578
579/** Number of parameters */
580#define SHFL_CPARMS_CLOSE (2)
581
582
583/**
584 * SHFL_FN_READ
585 */
586
587/** Parameters structure. */
588typedef struct _VBoxSFRead
589{
590 VBoxGuestHGCMCallInfo callInfo;
591
592 /** pointer, in: SHFLROOT
593 * Root handle of the mapping which name is queried.
594 */
595 HGCMFunctionParameter root;
596
597 /** value64, in:
598 * SHFLHANDLE of object to read from.
599 */
600 HGCMFunctionParameter handle;
601
602 /** value64, in:
603 * Offset to read from.
604 */
605 HGCMFunctionParameter offset;
606
607 /** value64, in/out:
608 * Bytes to read/How many were read.
609 */
610 HGCMFunctionParameter cb;
611
612 /** pointer, out:
613 * Buffer to place data to.
614 */
615 HGCMFunctionParameter buffer;
616
617} VBoxSFRead;
618
619/** Number of parameters */
620#define SHFL_CPARMS_READ (5)
621
622
623
624/**
625 * SHFL_FN_WRITE
626 */
627
628/** Parameters structure. */
629typedef struct _VBoxSFWrite
630{
631 VBoxGuestHGCMCallInfo callInfo;
632
633 /** pointer, in: SHFLROOT
634 * Root handle of the mapping which name is queried.
635 */
636 HGCMFunctionParameter root;
637
638 /** value64, in:
639 * SHFLHANDLE of object to write to.
640 */
641 HGCMFunctionParameter handle;
642
643 /** value64, in:
644 * Offset to write to.
645 */
646 HGCMFunctionParameter offset;
647
648 /** value64, in/out:
649 * Bytes to write/How many were written.
650 */
651 HGCMFunctionParameter cb;
652
653 /** pointer, in:
654 * Data to write.
655 */
656 HGCMFunctionParameter buffer;
657
658} VBoxSFWrite;
659
660/** Number of parameters */
661#define SHFL_CPARMS_WRITE (5)
662
663
664
665/**
666 * SHFL_FN_LOCK
667 */
668
669/** Lock owner is the HGCM client. */
670
671/** Lock mode bit mask. */
672#define SHFL_LOCK_MODE_MASK (0x3)
673/** Cancel lock on the given range. */
674#define SHFL_LOCK_CANCEL (0x0)
675/** Aquire read only lock. Prevent write to the range. */
676#define SHFL_LOCK_SHARED (0x1)
677/** Aquire write lock. Prevent both write and read to the range. */
678#define SHFL_LOCK_EXCLUSIVE (0x2)
679
680/** Do not wait for lock if it can not be acquired at the time. */
681#define SHFL_LOCK_NOWAIT (0x0)
682/** Wait and acquire lock. */
683#define SHFL_LOCK_WAIT (0x4)
684
685/** Lock the specified range. */
686#define SHFL_LOCK_PARTIAL (0x0)
687/** Lock entire object. */
688#define SHFL_LOCK_ENTIRE (0x8)
689
690/** Parameters structure. */
691typedef struct _VBoxSFLock
692{
693 VBoxGuestHGCMCallInfo callInfo;
694
695 /** pointer, in: SHFLROOT
696 * Root handle of the mapping which name is queried.
697 */
698 HGCMFunctionParameter root;
699
700 /** value64, in:
701 * SHFLHANDLE of object to be locked.
702 */
703 HGCMFunctionParameter handle;
704
705 /** value64, in:
706 * Starting offset of lock range.
707 */
708 HGCMFunctionParameter offset;
709
710 /** value64, in:
711 * Length of range.
712 */
713 HGCMFunctionParameter length;
714
715 /** value32, in:
716 * Lock flags SHFL_LOCK_*.
717 */
718 HGCMFunctionParameter flags;
719
720} VBoxSFLock;
721
722/** Number of parameters */
723#define SHFL_CPARMS_LOCK (5)
724
725
726
727/**
728 * SHFL_FN_FLUSH
729 */
730
731/** Parameters structure. */
732typedef struct _VBoxSFFlush
733{
734 VBoxGuestHGCMCallInfo callInfo;
735
736 /** pointer, in: SHFLROOT
737 * Root handle of the mapping which name is queried.
738 */
739 HGCMFunctionParameter root;
740
741 /** value64, in:
742 * SHFLHANDLE of object to be locked.
743 */
744 HGCMFunctionParameter handle;
745
746} VBoxSFFlush;
747
748/** Number of parameters */
749#define SHFL_CPARMS_FLUSH (2)
750
751/**
752 * SHFL_FN_LIST
753 */
754
755/** Listing information includes variable length RTDIRENTRY[EX] structures. */
756
757/** @todo might be necessary for future. */
758#define SHFL_LIST_NONE 0
759#define SHFL_LIST_RETURN_ONE 1
760
761/** Parameters structure. */
762typedef struct _VBoxSFList
763{
764 VBoxGuestHGCMCallInfo callInfo;
765
766 /** pointer, in: SHFLROOT
767 * Root handle of the mapping which name is queried.
768 */
769 HGCMFunctionParameter root;
770
771 /** value64, in:
772 * SHFLHANDLE of object to be listed.
773 */
774 HGCMFunctionParameter handle;
775
776 /** value32, in:
777 * List flags SHFL_LIST_*.
778 */
779 HGCMFunctionParameter flags;
780
781 /** value32, in/out:
782 * Bytes to be used for listing information/How many bytes were used.
783 */
784 HGCMFunctionParameter cb;
785
786 /** pointer, in/optional
787 * Points to SHFLSTRING buffer that specifies a search path.
788 */
789 HGCMFunctionParameter path;
790
791 /** pointer, out:
792 * Buffer to place listing information to. (SHFLDIRINFO)
793 */
794 HGCMFunctionParameter buffer;
795
796 /** value32, in/out:
797 * Indicates a key where the listing must be resumed.
798 * in: 0 means start from begin of object.
799 * out: 0 means listing completed.
800 */
801 HGCMFunctionParameter resumePoint;
802
803 /** pointer, out:
804 * Number of files returned
805 */
806 HGCMFunctionParameter cFiles;
807
808} VBoxSFList;
809
810/** Number of parameters */
811#define SHFL_CPARMS_LIST (8)
812
813
814
815/**
816 * SHFL_FN_INFORMATION
817 */
818
819/** Mask of Set/Get bit. */
820#define SHFL_INFO_MODE_MASK (0x1)
821/** Get information */
822#define SHFL_INFO_GET (0x0)
823/** Set information */
824#define SHFL_INFO_SET (0x1)
825
826/** Get name of the object. */
827#define SHFL_INFO_NAME (0x2)
828/** Set size of object (extend/trucate); only applies to file objects */
829#define SHFL_INFO_SIZE (0x4)
830/** Get/Set file object info. */
831#define SHFL_INFO_FILE (0x8)
832/** Get volume information. */
833#define SHFL_INFO_VOLUME (0x10)
834
835/** @todo different file info structures */
836
837
838/** Parameters structure. */
839typedef struct _VBoxSFInformation
840{
841 VBoxGuestHGCMCallInfo callInfo;
842
843 /** pointer, in: SHFLROOT
844 * Root handle of the mapping which name is queried.
845 */
846 HGCMFunctionParameter root;
847
848 /** value64, in:
849 * SHFLHANDLE of object to be listed.
850 */
851 HGCMFunctionParameter handle;
852
853 /** value32, in:
854 * SHFL_INFO_*
855 */
856 HGCMFunctionParameter flags;
857
858 /** value32, in/out:
859 * Bytes to be used for information/How many bytes were used.
860 */
861 HGCMFunctionParameter cb;
862
863 /** pointer, in/out:
864 * Information to be set/get (RTFSOBJINFO or SHFLSTRING).
865 * Do not forget to set the RTFSOBJINFO::Attr::enmAdditional for Get operation as well.
866 */
867 HGCMFunctionParameter info;
868
869} VBoxSFInformation;
870
871/** Number of parameters */
872#define SHFL_CPARMS_INFORMATION (5)
873
874
875/**
876 * SHFL_FN_REMOVE
877 */
878
879#define SHFL_REMOVE_FILE (0x1)
880#define SHFL_REMOVE_DIR (0x2)
881
882/** Parameters structure. */
883typedef struct _VBoxSFRemove
884{
885 VBoxGuestHGCMCallInfo callInfo;
886
887 /** pointer, in: SHFLROOT
888 * Root handle of the mapping which name is queried.
889 */
890 HGCMFunctionParameter root;
891
892 /** pointer, in:
893 * Points to SHFLSTRING buffer.
894 */
895 HGCMFunctionParameter path;
896
897 /** value32, in:
898 * remove flags (file/directory)
899 */
900 HGCMFunctionParameter flags;
901
902} VBoxSFRemove;
903
904#define SHFL_CPARMS_REMOVE (3)
905
906
907/**
908 * SHFL_FN_RENAME
909 */
910
911#define SHFL_RENAME_FILE (0x1)
912#define SHFL_RENAME_DIR (0x2)
913#define SHFL_RENAME_REPLACE_IF_EXISTS (0x4)
914
915/** Parameters structure. */
916typedef struct _VBoxSFRename
917{
918 VBoxGuestHGCMCallInfo callInfo;
919
920 /** pointer, in: SHFLROOT
921 * Root handle of the mapping which name is queried.
922 */
923 HGCMFunctionParameter root;
924
925 /** pointer, in:
926 * Points to SHFLSTRING src.
927 */
928 HGCMFunctionParameter src;
929
930 /** pointer, in:
931 * Points to SHFLSTRING dest.
932 */
933 HGCMFunctionParameter dest;
934
935 /** value32, in:
936 * rename flags (file/directory)
937 */
938 HGCMFunctionParameter flags;
939
940} VBoxSFRename;
941
942#define SHFL_CPARMS_RENAME (4)
943
944/**
945 * SHFL_FN_ADD_MAPPING
946 * Host call, no guest structure is used.
947 */
948
949#define SHFL_CPARMS_ADD_MAPPING (3)
950
951/**
952 * SHFL_FN_REMOVE_MAPPING
953 * Host call, no guest structure is used.
954 */
955
956#define SHFL_CPARMS_REMOVE_MAPPING (1)
957
958
959/**
960 * SHFL_FN_SET_STATUS_LED
961 * Host call, no guest structure is used.
962 */
963
964#define SHFL_CPARMS_SET_STATUS_LED (1)
965
966/** @} */
967
968#endif
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use