~steve-sk2/mingw-w64/oneiric

« back to all changes in this revision

Viewing changes to mingw-w64-headers/ddk/include/ddk/mountmgr.h

  • Committer: Bazaar Package Importer
  • Author(s): Stephen Kitt
  • Date: 2010-11-18 00:04:46 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20101118000446-xe24b423su55onyl
Tags: 1.0+20101003-1
* New maintainer. (Closes: #594371.)
* New upstream snapshot:
  - Includes getopt.h. (Closes: #569914.)
* Build g++ for Win64. (Closes: #600451.)
* Standards-Version 3.9.1 (new packaging).
* Include patch from
  http://mingw-w64.svn.sourceforge.net/viewvc/mingw-w64?view=revision&revision=3715
  as suggested by Rafaël Carré.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
1
#ifndef _MOUNTMGR_
3
2
#define _MOUNTMGR_
4
3
 
 
4
#if (NTDDI_VERSION >= NTDDI_WIN2K)
 
5
 
 
6
#if defined(DEFINE_GUID)
5
7
DEFINE_GUID(MOUNTDEV_MOUNTED_DEVICE_GUID, 0x53F5630D, 0xB6BF, 0x11D0, 0x94, 0xF2, 0x00, 0xA0, 0xC9, 0x1E, 0xFB, 0x8B);
 
8
#endif
6
9
 
7
10
#define MOUNTMGR_DEVICE_NAME L"\\Device\\MountPointManager"
8
11
#define MOUNTMGR_DOS_DEVICE_NAME L"\\\\.\\MountPointManager"
9
12
#define MOUNTMGRCONTROLTYPE ((ULONG) 'm')
10
13
#define MOUNTDEVCONTROLTYPE ((ULONG) 'M')
11
14
 
12
 
#define IOCTL_MOUNTMGR_CREATE_POINT  \
13
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
15
#define IOCTL_MOUNTMGR_DEFINE_UNIX_DRIVE CTL_CODE(MOUNTMGRCONTROLTYPE, 32, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
16
#define IOCTL_MOUNTMGR_QUERY_UNIX_DRIVE  CTL_CODE(MOUNTMGRCONTROLTYPE, 33, METHOD_BUFFERED, FILE_READ_ACCESS)
 
17
 
 
18
struct mountmgr_unix_drive {
 
19
  ULONG size;
 
20
  ULONG type;
 
21
  WCHAR letter;
 
22
  USHORT mount_point_offset;
 
23
  USHORT device_offset;
 
24
};
 
25
 
 
26
#define IOCTL_MOUNTMGR_CREATE_POINT \
 
27
  CTL_CODE(MOUNTMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
14
28
#define IOCTL_MOUNTMGR_DELETE_POINTS \
15
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
29
  CTL_CODE(MOUNTMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
16
30
#define IOCTL_MOUNTMGR_QUERY_POINTS \
17
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
 
31
  CTL_CODE(MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
18
32
#define IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY \
19
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
33
  CTL_CODE(MOUNTMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
20
34
#define IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER \
21
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
35
  CTL_CODE(MOUNTMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
22
36
#define IOCTL_MOUNTMGR_AUTO_DL_ASSIGNMENTS \
23
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
37
  CTL_CODE(MOUNTMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
24
38
#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_CREATED \
25
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
39
  CTL_CODE(MOUNTMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
26
40
#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED \
27
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
41
  CTL_CODE(MOUNTMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
28
42
#define IOCTL_MOUNTMGR_CHANGE_NOTIFY \
29
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
 
43
  CTL_CODE(MOUNTMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
30
44
#define IOCTL_MOUNTMGR_KEEP_LINKS_WHEN_OFFLINE \
31
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
45
  CTL_CODE(MOUNTMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
32
46
#define IOCTL_MOUNTMGR_CHECK_UNPROCESSED_VOLUMES \
33
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS)
 
47
  CTL_CODE(MOUNTMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS)
34
48
#define IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION \
35
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 11, METHOD_BUFFERED, FILE_READ_ACCESS)
36
 
#define IOCTL_MOUNTMGR_QUERY_DOS_VOLUME_PATH \
37
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
38
 
#define IOCTL_MOUNTMGR_QUERY_DOS_VOLUME_PATHS \
39
 
          CTL_CODE(MOUNTMGRCONTROLTYPE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
 
49
  CTL_CODE(MOUNTMGRCONTROLTYPE, 11, METHOD_BUFFERED, FILE_READ_ACCESS)
40
50
#define IOCTL_MOUNTDEV_QUERY_DEVICE_NAME \
41
 
          CTL_CODE(MOUNTDEVCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
42
 
 
43
 
typedef struct _MOUNTDEV_NAME
44
 
{
45
 
   USHORT NameLength;
46
 
   WCHAR Name[1];
47
 
} MOUNTDEV_NAME, *PMOUNTDEV_NAME;
48
 
 
49
 
typedef struct _MOUNTMGR_MOUNT_POINT
50
 
{
51
 
   ULONG SymbolicLinkNameOffset;
52
 
   USHORT SymbolicLinkNameLength;
53
 
   ULONG UniqueIdOffset;
54
 
   USHORT UniqueIdLength;
55
 
   ULONG DeviceNameOffset;
56
 
   USHORT DeviceNameLength;
 
51
  CTL_CODE(MOUNTDEVCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
 
52
 
 
53
#define MOUNTMGR_IS_DRIVE_LETTER(s)                                             \
 
54
  ((s)->Length == 28 && (s)->Buffer[0] == '\\' && (s)->Buffer[1] == 'D' &&      \
 
55
   (s)->Buffer[2] == 'o' && (s)->Buffer[3] == 's' && (s)->Buffer[4] == 'D' &&   \
 
56
   (s)->Buffer[5] == 'e' && \ (s)->Buffer[6] == 'v' && (s)->Buffer[7] == 'i' && \
 
57
   (s)->Buffer[8] == 'c' && (s)->Buffer[9] == 'e' && (s)->Buffer[10] == 's' &&  \
 
58
   (s)->Buffer[11] == '\\' && (s)->Buffer[12] >= 'A' &&                         \
 
59
   (s)->Buffer[12] <= 'Z' && (s)->Buffer[13] == ':')
 
60
 
 
61
#define MOUNTMGR_IS_VOLUME_NAME(s)                                               \
 
62
  (((s)->Length == 96 || ((s)->Length == 98 && (s)->Buffer[48] == '\\')) &&      \
 
63
   (s)->Buffer[0] == '\\'&& ((s)->Buffer[1] == '?' || (s)->Buffer[1] == '\\') && \
 
64
   (s)->Buffer[2] == '?' && (s)->Buffer[3] == '\\' && (s)->Buffer[4] == 'V' &&   \
 
65
   (s)->Buffer[5] == 'o' && (s)->Buffer[6] == 'l' && (s)->Buffer[7] == 'u' &&    \
 
66
   (s)->Buffer[8] == 'm' && (s)->Buffer[9] == 'e' && (s)->Buffer[10] == '{' &&   \
 
67
   (s)->Buffer[19] == '-' && (s)->Buffer[24] == '-' && (s)->Buffer[29] == '-' && \
 
68
   (s)->Buffer[34] == '-' && (s)->Buffer[47] == '}')
 
69
 
 
70
typedef struct _MOUNTMGR_CREATE_POINT_INPUT {
 
71
  USHORT SymbolicLinkNameOffset;
 
72
  USHORT SymbolicLinkNameLength;
 
73
  USHORT DeviceNameOffset;
 
74
  USHORT DeviceNameLength;
 
75
} MOUNTMGR_CREATE_POINT_INPUT, *PMOUNTMGR_CREATE_POINT_INPUT;
 
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;
57
84
} MOUNTMGR_MOUNT_POINT, *PMOUNTMGR_MOUNT_POINT;
58
85
 
59
 
typedef struct _MOUNTMGR_CREATE_POINT_INPUT 
60
 
{
61
 
   USHORT SymbolicLinkNameOffset;
62
 
   USHORT SymbolicLinkNameLength;
63
 
   USHORT DeviceNameOffset;
64
 
   USHORT DeviceNameLength;
65
 
} MOUNTMGR_CREATE_POINT_INPUT, *PMOUNTMGR_CREATE_POINT_INPUT;
66
 
 
67
 
typedef struct _MOUNTMGR_MOUNT_POINTS 
68
 
{
69
 
   ULONG Size;
70
 
   ULONG NumberOfMountPoints;
71
 
   MOUNTMGR_MOUNT_POINT MountPoints[1];
 
86
typedef struct _MOUNTMGR_MOUNT_POINTS {
 
87
  ULONG Size;
 
88
  ULONG NumberOfMountPoints;
 
89
  MOUNTMGR_MOUNT_POINT MountPoints[1];
72
90
} MOUNTMGR_MOUNT_POINTS, *PMOUNTMGR_MOUNT_POINTS;
73
91
 
74
 
typedef struct _MOUNTMGR_DRIVE_LETTER_INFORMATION
75
 
{
76
 
   BOOLEAN DriveLetterWasAssigned;
77
 
   UCHAR CurrentDriveLetter;
 
92
typedef struct _MOUNTMGR_DRIVE_LETTER_TARGET {
 
93
  USHORT DeviceNameLength;
 
94
  WCHAR DeviceName[1];
 
95
} MOUNTMGR_DRIVE_LETTER_TARGET, *PMOUNTMGR_DRIVE_LETTER_TARGET;
 
96
 
 
97
typedef struct _MOUNTMGR_DRIVE_LETTER_INFORMATION {
 
98
  BOOLEAN DriveLetterWasAssigned;
 
99
  UCHAR CurrentDriveLetter;
78
100
} MOUNTMGR_DRIVE_LETTER_INFORMATION, *PMOUNTMGR_DRIVE_LETTER_INFORMATION;
79
101
 
80
 
typedef struct _MOUNTMGR_DRIVE_LETTER_TARGET
81
 
{
82
 
   USHORT DeviceNameLength;
83
 
   WCHAR DeviceName[1];
84
 
} MOUNTMGR_DRIVE_LETTER_TARGET, *PMOUNTMGR_DRIVE_LETTER_TARGET;
 
102
typedef struct _MOUNTMGR_VOLUME_MOUNT_POINT {
 
103
  USHORT SourceVolumeNameOffset;
 
104
  USHORT SourceVolumeNameLength;
 
105
  USHORT TargetVolumeNameOffset;
 
106
  USHORT TargetVolumeNameLength;
 
107
} MOUNTMGR_VOLUME_MOUNT_POINT, *PMOUNTMGR_VOLUME_MOUNT_POINT;
85
108
 
86
109
typedef struct _MOUNTMGR_CHANGE_NOTIFY_INFO {
87
 
   ULONG EpicNumber;
 
110
  ULONG EpicNumber;
88
111
} MOUNTMGR_CHANGE_NOTIFY_INFO, *PMOUNTMGR_CHANGE_NOTIFY_INFO;
89
112
 
90
 
typedef struct _MOUNTMGR_VOLUME_MOUNT_POINT
91
 
{
92
 
   USHORT SourceVolumeNameOffset;
93
 
   USHORT SourceVolumeNameLength;
94
 
   USHORT TargetVolumeNameOffset;
95
 
   USHORT TargetVolumeNameLength;
96
 
} MOUNTMGR_VOLUME_MOUNT_POINT, *PMOUNTMGR_VOLUME_MOUNT_POINT;
97
 
 
98
 
typedef struct _MOUNTMGR_TARGET_NAME
99
 
{
100
 
   USHORT DeviceNameLength;
101
 
   WCHAR DeviceName[1];
 
113
typedef struct _MOUNTMGR_TARGET_NAME {
 
114
  USHORT DeviceNameLength;
 
115
  WCHAR DeviceName[1];
102
116
} MOUNTMGR_TARGET_NAME, *PMOUNTMGR_TARGET_NAME;
103
117
 
104
 
typedef struct _MOUNTMGR_VOLUME_PATHS
105
 
{
106
 
   ULONG MultiSzLength;
107
 
   WCHAR MultiSz[1];
 
118
typedef struct _MOUNTDEV_NAME {
 
119
  USHORT NameLength;
 
120
  WCHAR Name[1];
 
121
} MOUNTDEV_NAME, *PMOUNTDEV_NAME;
 
122
 
 
123
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
 
124
 
 
125
#if (NTDDI_VERSION >= NTDDI_WINXP)
 
126
 
 
127
#define IOCTL_MOUNTMGR_QUERY_DOS_VOLUME_PATH \
 
128
  CTL_CODE(MOUNTMGRCONTROLTYPE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
 
129
#define IOCTL_MOUNTMGR_QUERY_DOS_VOLUME_PATHS \
 
130
  CTL_CODE(MOUNTMGRCONTROLTYPE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
 
131
 
 
132
#define MOUNTMGR_IS_DOS_VOLUME_NAME(s) \
 
133
  (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 96 && (s)->Buffer[1] == '\\')
 
134
#define MOUNTMGR_IS_DOS_VOLUME_NAME_WB(s) \
 
135
  (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 98 && (s)->Buffer[1] == '\\')
 
136
#define MOUNTMGR_IS_NT_VOLUME_NAME(s) \
 
137
  ( MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 96 && (s)->Buffer[1] == '?')
 
138
#define MOUNTMGR_IS_NT_VOLUME_NAME_WB(s) \
 
139
  (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 98 && (s)->Buffer[1] == '?')
 
140
 
 
141
typedef struct _MOUNTMGR_VOLUME_PATHS {
 
142
  ULONG MultiSzLength;
 
143
  WCHAR MultiSz[1];
108
144
} MOUNTMGR_VOLUME_PATHS, *PMOUNTMGR_VOLUME_PATHS;
109
145
 
110
 
#define MOUNTMGR_IS_DRIVE_LETTER(s) ((s)->Length == 28 && (s)->Buffer[0] == '\\' && (s)->Buffer[1] == 'D' && \
111
 
                                     (s)->Buffer[2] == 'o' && (s)->Buffer[3] == 's' && (s)->Buffer[4] == 'D' && \
112
 
                                     (s)->Buffer[5] == 'e' && \ (s)->Buffer[6] == 'v' && (s)->Buffer[7] == 'i' && \
113
 
                                     (s)->Buffer[8] == 'c' && (s)->Buffer[9] == 'e' && (s)->Buffer[10] == 's' && \
114
 
                                     (s)->Buffer[11] == '\\' && (s)->Buffer[12] >= 'A' && \
115
 
                                     (s)->Buffer[12] <= 'Z' && (s)->Buffer[13] == ':')
116
 
 
117
 
#define MOUNTMGR_IS_VOLUME_NAME(s) (((s)->Length == 96 || ((s)->Length == 98 && (s)->Buffer[48] == '\\')) && \
118
 
                                     (s)->Buffer[0] == '\\'&& ((s)->Buffer[1] == '?' || (s)->Buffer[1] == '\\') && \
119
 
                                     (s)->Buffer[2] == '?' && (s)->Buffer[3] == '\\' && (s)->Buffer[4] == 'V' && \
120
 
                                     (s)->Buffer[5] == 'o' && (s)->Buffer[6] == 'l' && (s)->Buffer[7] == 'u' && \
121
 
                                     (s)->Buffer[8] == 'm' && (s)->Buffer[9] == 'e' && (s)->Buffer[10] == '{' &&  \
122
 
                                     (s)->Buffer[19] == '-' && (s)->Buffer[24] == '-' && (s)->Buffer[29] == '-' && \
123
 
                                     (s)->Buffer[34] == '-' && (s)->Buffer[47] == '}')
124
 
 
125
 
#define MOUNTMGR_IS_DOS_VOLUME_NAME(s) (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 96 && (s)->Buffer[1] == '\\')
126
 
#define MOUNTMGR_IS_DOS_VOLUME_NAME_WB(s) (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 98 && (s)->Buffer[1] == '\\')
127
 
#define MOUNTMGR_IS_NT_VOLUME_NAME(s) ( MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 96 && (s)->Buffer[1] == '?')
128
 
#define MOUNTMGR_IS_NT_VOLUME_NAME_WB(s) (MOUNTMGR_IS_VOLUME_NAME(s) && (s)->Length == 98 && (s)->Buffer[1] == '?')
129
 
#endif
 
146
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
 
147
 
 
148
#if (NTDDI_VERSION >= NTDDI_WS03)
 
149
 
 
150
#define IOCTL_MOUNTMGR_SCRUB_REGISTRY \
 
151
  CTL_CODE(MOUNTMGRCONTROLTYPE, 14, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
152
#define IOCTL_MOUNTMGR_QUERY_AUTO_MOUNT \
 
153
  CTL_CODE(MOUNTMGRCONTROLTYPE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
 
154
#define IOCTL_MOUNTMGR_SET_AUTO_MOUNT \
 
155
  CTL_CODE(MOUNTMGRCONTROLTYPE, 16, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
156
 
 
157
typedef enum _MOUNTMGR_AUTO_MOUNT_STATE {
 
158
  Disabled = 0,
 
159
  Enabled
 
160
} MOUNTMGR_AUTO_MOUNT_STATE;
 
161
 
 
162
typedef struct _MOUNTMGR_QUERY_AUTO_MOUNT {
 
163
  MOUNTMGR_AUTO_MOUNT_STATE CurrentState;
 
164
} MOUNTMGR_QUERY_AUTO_MOUNT, *PMOUNTMGR_QUERY_AUTO_MOUNT;
 
165
 
 
166
typedef struct _MOUNTMGR_SET_AUTO_MOUNT {
 
167
  MOUNTMGR_AUTO_MOUNT_STATE NewState;
 
168
} MOUNTMGR_SET_AUTO_MOUNT, *PMOUNTMGR_SET_AUTO_MOUNT;
 
169
 
 
170
#endif /* (NTDDI_VERSION >= NTDDI_WS03) */
 
171
 
 
172
#if (NTDDI_VERSION >= NTDDI_WIN7)
 
173
 
 
174
#define IOCTL_MOUNTMGR_BOOT_DL_ASSIGNMENT \
 
175
  CTL_CODE(MOUNTMGRCONTROLTYPE, 17, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
 
176
#define IOCTL_MOUNTMGR_TRACELOG_CACHE \
 
177
  CTL_CODE(MOUNTMGRCONTROLTYPE, 18, METHOD_BUFFERED, FILE_READ_ACCESS)
 
178
 
 
179
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
 
180
 
 
181
#endif /* _MOUNTMGR_ */
130
182