VirtualBox

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

Last change on this file since 4032 was 4032, checked in by vboxsync, 17 years ago

Implemented shared folder status light

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

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