b2703cb1cd16e1cb99ae1f57c7d6197005c0bc86
[reactos.git] / reactos / drivers / filesystems / udfs / Include / mountmgr.h
1 ////////////////////////////////////////////////////////////////////
2 // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
3 // All rights reserved
4 ////////////////////////////////////////////////////////////////////
5 /*++
6
7 Copyright (c) 1997-1999 Microsoft Corporation
8
9 Module Name:
10
11 mountmgr.h
12
13 Abstract:
14
15 This file defines the external mount point interface for administering
16 mount points.
17
18 Author:
19
20 norbertk
21
22 Revision History:
23
24 --*/
25
26 #ifndef _MOUNTMGR_
27 #define _MOUNTMGR_
28
29 #if _MSC_VER > 1000
30 #pragma once
31 #endif
32
33 #ifndef FAR
34 #define FAR
35 #endif
36
37
38 #define MOUNTMGR_DEVICE_NAME L"\\Device\\MountPointManager"
39 #define MOUNTMGR_DOS_DEVICE_NAME L"\\\\.\\MountPointManager"
40
41 #define MOUNTMGRCONTROLTYPE ((ULONG) 'm')
42 #define MOUNTDEVCONTROLTYPE ((ULONG) 'M')
43
44 //
45 // These are the IOCTLs supported by the mount point manager.
46 //
47
48 #define IOCTL_MOUNTMGR_CREATE_POINT CTL_CODE(MOUNTMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
49 #define IOCTL_MOUNTMGR_DELETE_POINTS CTL_CODE(MOUNTMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
50 #define IOCTL_MOUNTMGR_QUERY_POINTS CTL_CODE(MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
51 #define IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY CTL_CODE(MOUNTMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
52 #define IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER CTL_CODE(MOUNTMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
53 #define IOCTL_MOUNTMGR_AUTO_DL_ASSIGNMENTS CTL_CODE(MOUNTMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
54 #define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_CREATED CTL_CODE(MOUNTMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
55 #define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED CTL_CODE(MOUNTMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
56 #define IOCTL_MOUNTMGR_CHANGE_NOTIFY CTL_CODE(MOUNTMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
57 #define IOCTL_MOUNTMGR_KEEP_LINKS_WHEN_OFFLINE CTL_CODE(MOUNTMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
58 #define IOCTL_MOUNTMGR_CHECK_UNPROCESSED_VOLUMES CTL_CODE(MOUNTMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS)
59 #define IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION CTL_CODE(MOUNTMGRCONTROLTYPE, 11, METHOD_BUFFERED, FILE_READ_ACCESS)
60
61 //
62 // Input structure for IOCTL_MOUNTMGR_CREATE_POINT.
63 //
64
65 typedef struct _MOUNTMGR_CREATE_POINT_INPUT {
66 USHORT SymbolicLinkNameOffset;
67 USHORT SymbolicLinkNameLength;
68 USHORT DeviceNameOffset;
69 USHORT DeviceNameLength;
70 } MOUNTMGR_CREATE_POINT_INPUT, *PMOUNTMGR_CREATE_POINT_INPUT;
71
72 //
73 // Input structure for IOCTL_MOUNTMGR_DELETE_POINTS,
74 // IOCTL_MOUNTMGR_QUERY_POINTS, and IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY.
75 //
76
77 typedef struct _MOUNTMGR_MOUNT_POINT {
78 ULONG SymbolicLinkNameOffset;
79 USHORT SymbolicLinkNameLength;
80 ULONG UniqueIdOffset;
81 USHORT UniqueIdLength;
82 ULONG DeviceNameOffset;
83 USHORT DeviceNameLength;
84 } MOUNTMGR_MOUNT_POINT, *PMOUNTMGR_MOUNT_POINT;
85
86 //
87 // Output structure for IOCTL_MOUNTMGR_DELETE_POINTS,
88 // IOCTL_MOUNTMGR_QUERY_POINTS, and IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY.
89 //
90
91 typedef struct _MOUNTMGR_MOUNT_POINTS {
92 ULONG Size;
93 ULONG NumberOfMountPoints;
94 MOUNTMGR_MOUNT_POINT MountPoints[1];
95 } MOUNTMGR_MOUNT_POINTS, *PMOUNTMGR_MOUNT_POINTS;
96
97 //
98 // Input structure for IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER.
99 //
100
101 typedef struct _MOUNTMGR_DRIVE_LETTER_TARGET {
102 USHORT DeviceNameLength;
103 WCHAR DeviceName[1];
104 } MOUNTMGR_DRIVE_LETTER_TARGET, *PMOUNTMGR_DRIVE_LETTER_TARGET;
105
106 //
107 // Output structure for IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER.
108 //
109
110 typedef struct _MOUNTMGR_DRIVE_LETTER_INFORMATION {
111 BOOLEAN DriveLetterWasAssigned;
112 UCHAR CurrentDriveLetter;
113 } MOUNTMGR_DRIVE_LETTER_INFORMATION, *PMOUNTMGR_DRIVE_LETTER_INFORMATION;
114
115 //
116 // Input structure for IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_CREATED and
117 // IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED.
118 //
119
120 typedef struct _MOUNTMGR_VOLUME_MOUNT_POINT {
121 USHORT SourceVolumeNameOffset;
122 USHORT SourceVolumeNameLength;
123 USHORT TargetVolumeNameOffset;
124 USHORT TargetVolumeNameLength;
125 } MOUNTMGR_VOLUME_MOUNT_POINT, *PMOUNTMGR_VOLUME_MOUNT_POINT;
126
127 //
128 // Input structure for IOCTL_MOUNTMGR_CHANGE_NOTIFY.
129 // Output structure for IOCTL_MOUNTMGR_CHANGE_NOTIFY.
130 //
131
132 typedef struct _MOUNTMGR_CHANGE_NOTIFY_INFO {
133 ULONG EpicNumber;
134 } MOUNTMGR_CHANGE_NOTIFY_INFO, *PMOUNTMGR_CHANGE_NOTIFY_INFO;
135
136 //
137 // Input structure for IOCTL_MOUNTMGR_KEEP_LINKS_WHEN_OFFLINE and
138 // IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION.
139 //
140
141 typedef struct _MOUNTMGR_TARGET_NAME {
142 USHORT DeviceNameLength;
143 WCHAR DeviceName[1];
144 } MOUNTMGR_TARGET_NAME, *PMOUNTMGR_TARGET_NAME;
145
146 //
147 // The following IOCTL is supported by mounted devices.
148 //
149
150 #define IOCTL_MOUNTDEV_QUERY_DEVICE_NAME CTL_CODE(MOUNTDEVCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
151
152 //
153 // Output structure for IOCTL_MOUNTDEV_QUERY_DEVICE_NAME.
154 //
155
156 typedef struct _MOUNTDEV_NAME {
157 USHORT NameLength;
158 WCHAR Name[1];
159 } MOUNTDEV_NAME, *PMOUNTDEV_NAME;
160
161 //
162 // Devices that wish to be mounted should report this GUID in
163 // IoRegisterDeviceInterface.
164 //
165
166 //DEFINE_GUID(MOUNTDEV_MOUNTED_DEVICE_GUID, 0x53f5630d, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
167
168 #endif
169