VirtualBox

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

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

InnoTek -> innotek: all the headers and comments.

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