xref: /illumos-gate/usr/src/uts/common/smb/winioctl.h (revision 08f2ce59ccfd4e449c92dd87b23e756e439d4daa)
1adee6784SGordon Ross /*
2adee6784SGordon Ross  * CDDL HEADER START
3adee6784SGordon Ross  *
4adee6784SGordon Ross  * The contents of this file are subject to the terms of the
5adee6784SGordon Ross  * Common Development and Distribution License (the "License").
6adee6784SGordon Ross  * You may not use this file except in compliance with the License.
7adee6784SGordon Ross  *
8adee6784SGordon Ross  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9adee6784SGordon Ross  * or http://www.opensolaris.org/os/licensing.
10adee6784SGordon Ross  * See the License for the specific language governing permissions
11adee6784SGordon Ross  * and limitations under the License.
12adee6784SGordon Ross  *
13adee6784SGordon Ross  * When distributing Covered Code, include this CDDL HEADER in each
14adee6784SGordon Ross  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15adee6784SGordon Ross  * If applicable, add the following below this CDDL HEADER, with the
16adee6784SGordon Ross  * fields enclosed by brackets "[]" replaced with your own identifying
17adee6784SGordon Ross  * information: Portions Copyright [yyyy] [name of copyright owner]
18adee6784SGordon Ross  *
19adee6784SGordon Ross  * CDDL HEADER END
20adee6784SGordon Ross  */
21adee6784SGordon Ross /*
22adee6784SGordon Ross  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23adee6784SGordon Ross  * Use is subject to license terms.
24adee6784SGordon Ross  *
25adee6784SGordon Ross  * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
26*08f2ce59SGordon Ross  * Copyright 2022 RackTop Systems, Inc.
27adee6784SGordon Ross  */
28adee6784SGordon Ross #ifndef _SMB_WINIOCTL_H
29adee6784SGordon Ross #define	_SMB_WINIOCTL_H
30adee6784SGordon Ross 
31adee6784SGordon Ross /*
32adee6784SGordon Ross  * Standard Windows NT IOCTL/FSCTL definitions (derived from the VC++
33adee6784SGordon Ross  * include file of the same name).
34adee6784SGordon Ross  */
35adee6784SGordon Ross 
36adee6784SGordon Ross #ifdef __cplusplus
37adee6784SGordon Ross extern "C" {
38adee6784SGordon Ross #endif
39adee6784SGordon Ross 
40adee6784SGordon Ross #ifndef _DEVIOCTL_
41adee6784SGordon Ross #define	_DEVIOCTL_
42adee6784SGordon Ross 
43adee6784SGordon Ross /*
44adee6784SGordon Ross  * begin_ntddk begin_wdm begin_nthal begin_ntifs
45adee6784SGordon Ross  *
46adee6784SGordon Ross  * Define the various device type values.  Note that values used by Microsoft
47adee6784SGordon Ross  * Corporation are in the range 0-32767, and 32768-65535 are reserved for use
48adee6784SGordon Ross  * by customers.
49adee6784SGordon Ross  */
50adee6784SGordon Ross 
51adee6784SGordon Ross #define	DEVICE_TYPE DWORD
52adee6784SGordon Ross 
53adee6784SGordon Ross #define	FILE_DEVICE_BEEP		0x00000001
54adee6784SGordon Ross #define	FILE_DEVICE_CD_ROM		0x00000002
55adee6784SGordon Ross #define	FILE_DEVICE_CD_ROM_FILE_SYSTEM	0x00000003
56adee6784SGordon Ross #define	FILE_DEVICE_CONTROLLER		0x00000004
57adee6784SGordon Ross #define	FILE_DEVICE_DATALINK		0x00000005
58adee6784SGordon Ross #define	FILE_DEVICE_DFS			0x00000006
59adee6784SGordon Ross #define	FILE_DEVICE_DISK		0x00000007
60adee6784SGordon Ross #define	FILE_DEVICE_DISK_FILE_SYSTEM	0x00000008
61adee6784SGordon Ross #define	FILE_DEVICE_FILE_SYSTEM		0x00000009
62adee6784SGordon Ross #define	FILE_DEVICE_INPORT_PORT		0x0000000a
63adee6784SGordon Ross #define	FILE_DEVICE_KEYBOARD		0x0000000b
64adee6784SGordon Ross #define	FILE_DEVICE_MAILSLOT		0x0000000c
65adee6784SGordon Ross #define	FILE_DEVICE_MIDI_IN		0x0000000d
66adee6784SGordon Ross #define	FILE_DEVICE_MIDI_OUT		0x0000000e
67adee6784SGordon Ross #define	FILE_DEVICE_MOUSE		0x0000000f
68adee6784SGordon Ross #define	FILE_DEVICE_MULTI_UNC_PROVIDER	0x00000010
69adee6784SGordon Ross #define	FILE_DEVICE_NAMED_PIPE		0x00000011
70adee6784SGordon Ross #define	FILE_DEVICE_NETWORK		0x00000012
71adee6784SGordon Ross #define	FILE_DEVICE_NETWORK_BROWSER	0x00000013
72adee6784SGordon Ross #define	FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
73adee6784SGordon Ross #define	FILE_DEVICE_NULL		0x00000015
74adee6784SGordon Ross #define	FILE_DEVICE_PARALLEL_PORT	0x00000016
75adee6784SGordon Ross #define	FILE_DEVICE_PHYSICAL_NETCARD	0x00000017
76adee6784SGordon Ross #define	FILE_DEVICE_PRINTER		0x00000018
77adee6784SGordon Ross #define	FILE_DEVICE_SCANNER		0x00000019
78adee6784SGordon Ross #define	FILE_DEVICE_SERIAL_MOUSE_PORT	0x0000001a
79adee6784SGordon Ross #define	FILE_DEVICE_SERIAL_PORT		0x0000001b
80adee6784SGordon Ross #define	FILE_DEVICE_SCREEN		0x0000001c
81adee6784SGordon Ross #define	FILE_DEVICE_SOUND		0x0000001d
82adee6784SGordon Ross #define	FILE_DEVICE_STREAMS		0x0000001e
83adee6784SGordon Ross #define	FILE_DEVICE_TAPE		0x0000001f
84adee6784SGordon Ross #define	FILE_DEVICE_TAPE_FILE_SYSTEM	0x00000020
85adee6784SGordon Ross #define	FILE_DEVICE_TRANSPORT		0x00000021
86adee6784SGordon Ross #define	FILE_DEVICE_UNKNOWN		0x00000022
87adee6784SGordon Ross #define	FILE_DEVICE_VIDEO		0x00000023
88adee6784SGordon Ross #define	FILE_DEVICE_VIRTUAL_DISK	0x00000024
89adee6784SGordon Ross #define	FILE_DEVICE_WAVE_IN		0x00000025
90adee6784SGordon Ross #define	FILE_DEVICE_WAVE_OUT		0x00000026
91adee6784SGordon Ross #define	FILE_DEVICE_8042_PORT		0x00000027
92adee6784SGordon Ross #define	FILE_DEVICE_NETWORK_REDIRECTOR	0x00000028
93adee6784SGordon Ross #define	FILE_DEVICE_BATTERY		0x00000029
94adee6784SGordon Ross #define	FILE_DEVICE_BUS_EXTENDER	0x0000002a
95adee6784SGordon Ross #define	FILE_DEVICE_MODEM		0x0000002b
96adee6784SGordon Ross #define	FILE_DEVICE_VDM			0x0000002c
97adee6784SGordon Ross #define	FILE_DEVICE_MASS_STORAGE	0x0000002d
98adee6784SGordon Ross #define	FILE_DEVICE_SMB			0x0000002e
99adee6784SGordon Ross #define	FILE_DEVICE_KS			0x0000002f
100adee6784SGordon Ross #define	FILE_DEVICE_CHANGER		0x00000030
101adee6784SGordon Ross #define	FILE_DEVICE_SMARTCARD		0x00000031
102adee6784SGordon Ross #define	FILE_DEVICE_ACPI		0x00000032
103adee6784SGordon Ross #define	FILE_DEVICE_DVD			0x00000033
104adee6784SGordon Ross #define	FILE_DEVICE_FULLSCREEN_VIDEO	0x00000034
105adee6784SGordon Ross #define	FILE_DEVICE_DFS_FILE_SYSTEM	0x00000035
106adee6784SGordon Ross #define	FILE_DEVICE_DFS_VOLUME		0x00000036
107adee6784SGordon Ross 
108adee6784SGordon Ross /*
109adee6784SGordon Ross  * Macro definition for defining IOCTL and FSCTL function control codes.  Note
110adee6784SGordon Ross  * that function codes 0-2047 are reserved for Microsoft Corporation, and
111adee6784SGordon Ross  * 2048-4095 are reserved for customers.
112adee6784SGordon Ross  */
113adee6784SGordon Ross 
114adee6784SGordon Ross #define	CTL_CODE(DeviceType, Function, Method, Access) \
115adee6784SGordon Ross 	(((DeviceType) << 16) | ((Access) << 14) |     \
116adee6784SGordon Ross 	((Function) << 2) | (Method))
117adee6784SGordon Ross 
118adee6784SGordon Ross /*
119adee6784SGordon Ross  * Define the method codes for how buffers are passed for I/O and FS controls
120adee6784SGordon Ross  */
121adee6784SGordon Ross 
122adee6784SGordon Ross #define	METHOD_BUFFERED			0
123adee6784SGordon Ross #define	METHOD_IN_DIRECT		1
124adee6784SGordon Ross #define	METHOD_OUT_DIRECT		2
125adee6784SGordon Ross #define	METHOD_NEITHER			3
126adee6784SGordon Ross 
127adee6784SGordon Ross /*
128adee6784SGordon Ross  * Define the access check value for any access
129adee6784SGordon Ross  */
130adee6784SGordon Ross 
131adee6784SGordon Ross #define	FILE_ANY_ACCESS			0
132adee6784SGordon Ross #define	FILE_READ_ACCESS		0x0001	/* file & pipe */
133adee6784SGordon Ross #define	FILE_WRITE_ACCESS		0x0002	/* file & pipe */
134adee6784SGordon Ross 
135adee6784SGordon Ross /* end_ntddk end_wdm end_nthal end_ntifs */
136adee6784SGordon Ross 
137adee6784SGordon Ross #endif /* _DEVIOCTL_ */
138adee6784SGordon Ross 
139adee6784SGordon Ross 
140adee6784SGordon Ross #ifndef _NTDDSTOR_H_
141adee6784SGordon Ross #define	_NTDDSTOR_H_
142adee6784SGordon Ross 
143adee6784SGordon Ross #ifdef __cplusplus
144adee6784SGordon Ross extern "C" {
145adee6784SGordon Ross #endif
146adee6784SGordon Ross 
147adee6784SGordon Ross /*
148adee6784SGordon Ross  * IoControlCode values for storage devices
149adee6784SGordon Ross  */
150adee6784SGordon Ross 
151adee6784SGordon Ross #define	IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
152adee6784SGordon Ross 
153adee6784SGordon Ross /*
154adee6784SGordon Ross  * The following device control codes are common for all class drivers.  They
155adee6784SGordon Ross  * should be used in place of the older IOCTL_DISK, IOCTL_CDROM and IOCTL_TAPE
156adee6784SGordon Ross  * common codes
157adee6784SGordon Ross  */
158adee6784SGordon Ross 
159adee6784SGordon Ross #define	IOCTL_STORAGE_CHECK_VERIFY \
160adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
161adee6784SGordon Ross #define	IOCTL_STORAGE_MEDIA_REMOVAL \
162adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
163adee6784SGordon Ross #define	IOCTL_STORAGE_EJECT_MEDIA \
164adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
165adee6784SGordon Ross #define	IOCTL_STORAGE_LOAD_MEDIA \
166adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
167adee6784SGordon Ross #define	IOCTL_STORAGE_RESERVE \
168adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
169adee6784SGordon Ross #define	IOCTL_STORAGE_RELEASE \
170adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
171adee6784SGordon Ross #define	IOCTL_STORAGE_FIND_NEW_DEVICES \
172adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
173adee6784SGordon Ross 
174adee6784SGordon Ross #define	IOCTL_STORAGE_GET_MEDIA_TYPES \
175adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
176adee6784SGordon Ross #define	IOCTL_STORAGE_GET_MEDIA_TYPES_EX \
177adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS)
178adee6784SGordon Ross 
179adee6784SGordon Ross #define	IOCTL_STORAGE_RESET_BUS \
180adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
181adee6784SGordon Ross #define	IOCTL_STORAGE_RESET_DEVICE \
182adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
183adee6784SGordon Ross 
184adee6784SGordon Ross #define	IOCTL_STORAGE_GET_DEVICE_NUMBER \
185adee6784SGordon Ross 	CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS)
186adee6784SGordon Ross 
187adee6784SGordon Ross 
188adee6784SGordon Ross #ifdef __cplusplus
189adee6784SGordon Ross }
190adee6784SGordon Ross #endif
191adee6784SGordon Ross #endif /* _NTDDSTOR_H_ */
192adee6784SGordon Ross 
193adee6784SGordon Ross /*
194adee6784SGordon Ross  * IoControlCode values for disk devices.
195adee6784SGordon Ross  */
196adee6784SGordon Ross 
197adee6784SGordon Ross #define	IOCTL_DISK_BASE			FILE_DEVICE_DISK
198adee6784SGordon Ross #define	IOCTL_DISK_GET_DRIVE_GEOMETRY \
199adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
200adee6784SGordon Ross #define	IOCTL_DISK_GET_PARTITION_INFO \
201adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
202adee6784SGordon Ross #define	IOCTL_DISK_SET_PARTITION_INFO \
203adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0002, METHOD_BUFFERED, \
204adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
205adee6784SGordon Ross #define	IOCTL_DISK_GET_DRIVE_LAYOUT \
206adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
207adee6784SGordon Ross #define	IOCTL_DISK_SET_DRIVE_LAYOUT \
208adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0004, METHOD_BUFFERED, \
209adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
210adee6784SGordon Ross #define	IOCTL_DISK_VERIFY \
211adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED, FILE_ANY_ACCESS)
212adee6784SGordon Ross #define	IOCTL_DISK_FORMAT_TRACKS \
213adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED,	\
214adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
215adee6784SGordon Ross #define	IOCTL_DISK_REASSIGN_BLOCKS \
216adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED, \
217adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
218adee6784SGordon Ross #define	IOCTL_DISK_PERFORMANCE \
219adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
220adee6784SGordon Ross #define	IOCTL_DISK_IS_WRITABLE \
221adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS)
222adee6784SGordon Ross #define	IOCTL_DISK_LOGGING \
223adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x000a, METHOD_BUFFERED, FILE_ANY_ACCESS)
224adee6784SGordon Ross #define	IOCTL_DISK_FORMAT_TRACKS_EX \
225adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x000b, METHOD_BUFFERED, \
226adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
227adee6784SGordon Ross #define	IOCTL_DISK_HISTOGRAM_STRUCTURE \
228adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x000c, METHOD_BUFFERED, FILE_ANY_ACCESS)
229adee6784SGordon Ross #define	IOCTL_DISK_HISTOGRAM_DATA \
230adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x000d, METHOD_BUFFERED, FILE_ANY_ACCESS)
231adee6784SGordon Ross #define	IOCTL_DISK_HISTOGRAM_RESET \
232adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x000e, METHOD_BUFFERED, FILE_ANY_ACCESS)
233adee6784SGordon Ross #define	IOCTL_DISK_REQUEST_STRUCTURE \
234adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x000f, METHOD_BUFFERED, FILE_ANY_ACCESS)
235adee6784SGordon Ross #define	IOCTL_DISK_REQUEST_DATA \
236adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
237adee6784SGordon Ross #define	IOCTL_DISK_CONTROLLER_NUMBER \
238adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0011, METHOD_BUFFERED, FILE_ANY_ACCESS)
239adee6784SGordon Ross 
240adee6784SGordon Ross /*
241adee6784SGordon Ross  * IOCTL support for SMART drive fault prediction.
242adee6784SGordon Ross  */
243adee6784SGordon Ross 
244adee6784SGordon Ross #define	SMART_GET_VERSION \
245adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0020, METHOD_BUFFERED, FILE_READ_ACCESS)
246adee6784SGordon Ross #define	SMART_SEND_DRIVE_COMMAND \
247adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED,	\
248adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
249adee6784SGordon Ross #define	SMART_RCV_DRIVE_DATA \
250adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, \
251adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
252adee6784SGordon Ross 
253adee6784SGordon Ross 
254adee6784SGordon Ross /*
255adee6784SGordon Ross  * The following device control codes are common for all class drivers.  The
256adee6784SGordon Ross  * functions codes defined here must match all of the other class drivers.
257adee6784SGordon Ross  *
258adee6784SGordon Ross  * Warning: these codes will be replaced in the future by equivalent
259adee6784SGordon Ross  * IOCTL_STORAGE codes
260adee6784SGordon Ross  */
261adee6784SGordon Ross 
262adee6784SGordon Ross #define	IOCTL_DISK_CHECK_VERIFY \
263adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
264adee6784SGordon Ross #define	IOCTL_DISK_MEDIA_REMOVAL \
265adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
266adee6784SGordon Ross #define	IOCTL_DISK_EJECT_MEDIA \
267adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
268adee6784SGordon Ross #define	IOCTL_DISK_LOAD_MEDIA \
269adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
270adee6784SGordon Ross #define	IOCTL_DISK_RESERVE \
271adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
272adee6784SGordon Ross #define	IOCTL_DISK_RELEASE \
273adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
274adee6784SGordon Ross #define	IOCTL_DISK_FIND_NEW_DEVICES \
275adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
276adee6784SGordon Ross #define	IOCTL_DISK_GET_MEDIA_TYPES \
277adee6784SGordon Ross 	CTL_CODE(IOCTL_DISK_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
278adee6784SGordon Ross 
279adee6784SGordon Ross #define	IOCTL_CHANGER_BASE		FILE_DEVICE_CHANGER
280adee6784SGordon Ross 
281adee6784SGordon Ross #define	IOCTL_CHANGER_GET_PARAMETERS \
282adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
283adee6784SGordon Ross #define	IOCTL_CHANGER_GET_STATUS \
284adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
285adee6784SGordon Ross #define	IOCTL_CHANGER_GET_PRODUCT_DATA \
286adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
287adee6784SGordon Ross #define	IOCTL_CHANGER_SET_ACCESS \
288adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x0004, METHOD_BUFFERED, \
289adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
290adee6784SGordon Ross #define	IOCTL_CHANGER_GET_ELEMENT_STATUS \
291adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x0005, METHOD_BUFFERED, \
292adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
293adee6784SGordon Ross #define	IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS \
294adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
295adee6784SGordon Ross #define	IOCTL_CHANGER_SET_POSITION \
296adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
297adee6784SGordon Ross #define	IOCTL_CHANGER_EXCHANGE_MEDIUM \
298adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
299adee6784SGordon Ross #define	IOCTL_CHANGER_MOVE_MEDIUM \
300adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS)
301adee6784SGordon Ross #define	IOCTL_CHANGER_REINITIALIZE_TRANSPORT \
302adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
303adee6784SGordon Ross #define	IOCTL_CHANGER_QUERY_VOLUME_TAGS \
304adee6784SGordon Ross 	CTL_CODE(IOCTL_CHANGER_BASE, 0x000B, METHOD_BUFFERED, \
305adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
306adee6784SGordon Ross 
307adee6784SGordon Ross #ifndef _FILESYSTEMFSCTL_
308adee6784SGordon Ross #define	_FILESYSTEMFSCTL_
309adee6784SGordon Ross /*
310adee6784SGordon Ross  * The following is a list of the native file system fsctls followed by
311adee6784SGordon Ross  * additional network file system fsctls, DFS fsctls and Named Pipe fsctls.
312adee6784SGordon Ross  * Some values have been decommissioned.
313adee6784SGordon Ross  */
314adee6784SGordon Ross 
315adee6784SGordon Ross /* FILE_DEVICE_FILE_SYSTEM */
316adee6784SGordon Ross #define	FSCTL_REQUEST_OPLOCK_LEVEL_1 \
317adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  0, METHOD_BUFFERED, FILE_ANY_ACCESS)
318adee6784SGordon Ross #define	FSCTL_REQUEST_OPLOCK_LEVEL_2 \
319adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  1, METHOD_BUFFERED, FILE_ANY_ACCESS)
320adee6784SGordon Ross #define	FSCTL_REQUEST_BATCH_OPLOCK \
321adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  2, METHOD_BUFFERED, FILE_ANY_ACCESS)
322adee6784SGordon Ross #define	FSCTL_OPLOCK_BREAK_ACKNOWLEDGE \
323adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  3, METHOD_BUFFERED, FILE_ANY_ACCESS)
324adee6784SGordon Ross #define	FSCTL_OPBATCH_ACK_CLOSE_PENDING \
325adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  4, METHOD_BUFFERED, FILE_ANY_ACCESS)
326adee6784SGordon Ross #define	FSCTL_OPLOCK_BREAK_NOTIFY \
327adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  5, METHOD_BUFFERED, FILE_ANY_ACCESS)
328adee6784SGordon Ross #define	FSCTL_LOCK_VOLUME \
329adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  6, METHOD_BUFFERED, FILE_ANY_ACCESS)
330adee6784SGordon Ross #define	FSCTL_UNLOCK_VOLUME \
331adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  7, METHOD_BUFFERED, FILE_ANY_ACCESS)
332adee6784SGordon Ross #define	FSCTL_DISMOUNT_VOLUME \
333adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  8, METHOD_BUFFERED, FILE_ANY_ACCESS)
334adee6784SGordon Ross /* decommissioned fsctl value 9 */
335adee6784SGordon Ross #define	FSCTL_IS_VOLUME_MOUNTED \
336adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
337adee6784SGordon Ross /* PATHNAME_BUFFER, */
338adee6784SGordon Ross #define	FSCTL_IS_PATHNAME_VALID \
339adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
340adee6784SGordon Ross #define	FSCTL_MARK_VOLUME_DIRTY \
341adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
342adee6784SGordon Ross /* decommissioned fsctl value 13 */
343adee6784SGordon Ross #define	FSCTL_QUERY_RETRIEVAL_POINTERS \
344adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14,  METHOD_NEITHER, FILE_ANY_ACCESS)
345adee6784SGordon Ross #define	FSCTL_GET_COMPRESSION \
346adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
347adee6784SGordon Ross #define	FSCTL_SET_COMPRESSION \
348adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, \
349adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
350adee6784SGordon Ross /* decommissioned fsctl value 17 */
351adee6784SGordon Ross /* decommissioned fsctl value 18 */
352adee6784SGordon Ross #define	FSCTL_MARK_AS_SYSTEM_HIVE \
353adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19,  METHOD_NEITHER, FILE_ANY_ACCESS)
354adee6784SGordon Ross #define	FSCTL_OPLOCK_BREAK_ACK_NO_2 \
355adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
356adee6784SGordon Ross #define	FSCTL_INVALIDATE_VOLUMES \
357adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
358adee6784SGordon Ross /* FSCTL_QUERY_FAT_BPB_BUFFER */
359adee6784SGordon Ross #define	FSCTL_QUERY_FAT_BPB \
360adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
361adee6784SGordon Ross #define	FSCTL_REQUEST_FILTER_OPLOCK \
362adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
363adee6784SGordon Ross /* FILESYSTEM_STATISTICS */
364adee6784SGordon Ross #define	FSCTL_FILESYSTEM_GET_STATISTICS \
365adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
366adee6784SGordon Ross /* NTFS_VOLUME_DATA_BUFFER */
367adee6784SGordon Ross #define	FSCTL_GET_NTFS_VOLUME_DATA \
368adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
369adee6784SGordon Ross /* NTFS_FILE_RECORD_INPUT_BUFFER, NTFS_FILE_RECORD_OUTPUT_BUFFER */
370adee6784SGordon Ross #define	FSCTL_GET_NTFS_FILE_RECORD \
371adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
372adee6784SGordon Ross /* STARTING_LCN_INPUT_BUFFER, VOLUME_BITMAP_BUFFER */
373adee6784SGordon Ross #define	FSCTL_GET_VOLUME_BITMAP \
374adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27,  METHOD_NEITHER, FILE_ANY_ACCESS)
375adee6784SGordon Ross /* STARTING_VCN_INPUT_BUFFER, RETRIEVAL_POINTERS_BUFFER */
376adee6784SGordon Ross #define	FSCTL_GET_RETRIEVAL_POINTERS \
377adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28,  METHOD_NEITHER, FILE_ANY_ACCESS)
378adee6784SGordon Ross /* MOVE_FILE_DATA, */
379adee6784SGordon Ross #define	FSCTL_MOVE_FILE \
380adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
381adee6784SGordon Ross #define	FSCTL_IS_VOLUME_DIRTY \
382adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
383adee6784SGordon Ross #define	FSCTL_GET_HFS_INFORMATION \
384adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
385adee6784SGordon Ross #define	FSCTL_ALLOW_EXTENDED_DASD_IO \
386adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER,  FILE_ANY_ACCESS)
387adee6784SGordon Ross #define	FSCTL_READ_PROPERTY_DATA \
388adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
389adee6784SGordon Ross #define	FSCTL_WRITE_PROPERTY_DATA \
390adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS)
391adee6784SGordon Ross #define	FSCTL_FIND_FILES_BY_SID \
392adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
393adee6784SGordon Ross /* decommissioned fsctl value 36 */
394adee6784SGordon Ross #define	FSCTL_DUMP_PROPERTY_DATA \
395adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37,  METHOD_NEITHER, FILE_ANY_ACCESS)
396adee6784SGordon Ross /* FILE_OBJECTID_BUFFER */
397adee6784SGordon Ross #define	FSCTL_SET_OBJECT_ID \
398adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_ANY_ACCESS)
399adee6784SGordon Ross /* FILE_OBJECTID_BUFFER */
400adee6784SGordon Ross #define	FSCTL_GET_OBJECT_ID \
401adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
402adee6784SGordon Ross #define	FSCTL_DELETE_OBJECT_ID \
403adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_ANY_ACCESS)
404adee6784SGordon Ross /* REPARSE_DATA_BUFFER, */
405adee6784SGordon Ross #define	FSCTL_SET_REPARSE_POINT \
406adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS)
407adee6784SGordon Ross /* REPARSE_DATA_BUFFER */
408adee6784SGordon Ross #define	FSCTL_GET_REPARSE_POINT \
409adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
410adee6784SGordon Ross /* REPARSE_DATA_BUFFER, */
411adee6784SGordon Ross #define	FSCTL_DELETE_REPARSE_POINT \
412adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS)
413adee6784SGordon Ross /* MFT_ENUM_DATA, */
414adee6784SGordon Ross #define	FSCTL_ENUM_USN_DATA \
415adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44,  METHOD_NEITHER, FILE_READ_ACCESS)
416adee6784SGordon Ross /* BULK_SECURITY_TEST_DATA, */
417adee6784SGordon Ross #define	FSCTL_SECURITY_ID_CHECK \
418adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45,  METHOD_NEITHER, FILE_READ_ACCESS)
419adee6784SGordon Ross /* READ_USN_JOURNAL_DATA, USN */
420adee6784SGordon Ross #define	FSCTL_READ_USN_JOURNAL \
421adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46,  METHOD_NEITHER, FILE_READ_ACCESS)
422adee6784SGordon Ross #define	FSCTL_SET_OBJECT_ID_EXTENDED \
423adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_ANY_ACCESS)
424adee6784SGordon Ross /* FILE_OBJECTID_BUFFER */
425adee6784SGordon Ross #define	FSCTL_CREATE_OR_GET_OBJECT_ID \
426adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS)
427adee6784SGordon Ross #define	FSCTL_SET_SPARSE \
428adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_ANY_ACCESS)
429adee6784SGordon Ross /* FILE_ZERO_DATA_INFORMATION, */
430adee6784SGordon Ross #define	FSCTL_SET_ZERO_DATA \
431adee6784SGordon Ross     CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_ACCESS)
432adee6784SGordon Ross /* FILE_ALLOCATED_RANGE_BUFFER, FILE_ALLOCATED_RANGE_BUFFER */
433adee6784SGordon Ross #define	FSCTL_QUERY_ALLOCATED_RANGES \
434adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51,  METHOD_NEITHER, FILE_READ_ACCESS)
435adee6784SGordon Ross #define	FSCTL_ENABLE_UPGRADE \
436adee6784SGordon Ross     CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_ACCESS)
437adee6784SGordon Ross /* ENCRYPTION_BUFFER, */
438adee6784SGordon Ross #define	FSCTL_SET_ENCRYPTION \
439adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_NEITHER, FILE_ANY_ACCESS)
440adee6784SGordon Ross #define	FSCTL_ENCRYPTION_FSCTL_IO \
441adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54,  METHOD_NEITHER, FILE_ANY_ACCESS)
442adee6784SGordon Ross /* ENCRYPTED_DATA_INFO, */
443adee6784SGordon Ross #define	FSCTL_WRITE_RAW_ENCRYPTED \
444adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55,  METHOD_NEITHER, FILE_ANY_ACCESS)
445adee6784SGordon Ross /* REQUEST_RAW_ENCRYPTED_DATA, ENCRYPTED_DATA_INFO */
446adee6784SGordon Ross #define	FSCTL_READ_RAW_ENCRYPTED \
447adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56,  METHOD_NEITHER, FILE_ANY_ACCESS)
448adee6784SGordon Ross /* CREATE_USN_JOUNRAL_DATA, */
449adee6784SGordon Ross #define	FSCTL_CREATE_USN_JOURNAL \
450adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57,  METHOD_NEITHER, FILE_READ_ACCESS)
451adee6784SGordon Ross /* Read the Usn Record for a file */
452adee6784SGordon Ross #define	FSCTL_READ_FILE_USN_DATA \
453adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58,  METHOD_NEITHER, FILE_ANY_ACCESS)
454adee6784SGordon Ross /* Generate Close Usn Record */
455adee6784SGordon Ross #define	FSCTL_WRITE_USN_CLOSE_RECORD \
456adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59,  METHOD_NEITHER, FILE_ANY_ACCESS)
457adee6784SGordon Ross #define	FSCTL_EXTEND_VOLUME \
458adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
459adee6784SGordon Ross #define	FSCTL_SIS_COPYFILE \
460adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS)
461adee6784SGordon Ross #define	FSCTL_RECALL_FILE \
462adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS)
463adee6784SGordon Ross #define	FSCTL_SET_DEFECT_MANAGEMENT \
464adee6784SGordon Ross     CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 77, METHOD_BUFFERED, FILE_WRITE_ACCESS)
465adee6784SGordon Ross #define	FSCTL_QUERY_SPARING_INFO \
466adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 78, METHOD_BUFFERED, FILE_ANY_ACCESS)
467adee6784SGordon Ross #define	FSCTL_QUERY_ON_DISK_VOLUME_INFO \
468adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 79, METHOD_BUFFERED, FILE_ANY_ACCESS)
469adee6784SGordon Ross #define	FSCTL_SET_ZERO_ON_DEALLOCATION \
470adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 101, METHOD_BUFFERED, FILE_ANY_ACCESS)
471adee6784SGordon Ross #define	FSCTL_SET_SHORT_NAME_BEHAVIOR \
472adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS)
473adee6784SGordon Ross #define	FSCTL_FILE_LEVEL_TRIM \
474adee6784SGordon Ross     CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 130, METHOD_BUFFERED, FILE_WRITE_ACCESS)
475adee6784SGordon Ross #define	FSCTL_OFFLOAD_READ \
476adee6784SGordon Ross     CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 153, METHOD_BUFFERED, FILE_READ_ACCESS)
477adee6784SGordon Ross #define	FSCTL_OFFLOAD_WRITE \
478adee6784SGordon Ross     CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 154, METHOD_BUFFERED, FILE_WRITE_ACCESS)
479adee6784SGordon Ross #define	FSCTL_GET_INTEGRITY_INFORMATION \
480adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 159, METHOD_BUFFERED, FILE_ANY_ACCESS)
481adee6784SGordon Ross #define	FSCTL_SET_INTEGRITY_INFORMATION \
482adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 160, METHOD_BUFFERED, \
483adee6784SGordon Ross 		FILE_READ_ACCESS | FILE_WRITE_ACCESS)
48455f0a249SGordon Ross #define	FSCTL_QUERY_FILE_REGIONS \
48555f0a249SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 161, METHOD_BUFFERED, FILE_ANY_ACCESS)
486adee6784SGordon Ross 
487*08f2ce59SGordon Ross #define	FSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT \
488*08f2ce59SGordon Ross 	CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 272, METHOD_BUFFERED, FILE_ANY_ACCESS)
489*08f2ce59SGordon Ross 
490adee6784SGordon Ross /* FILE_DEVICE_NETWORK_FILE_SYSTEM */
491adee6784SGordon Ross /* Read the snapshot info for Volume Shadow Copy Services */
492adee6784SGordon Ross #define	FSCTL_SRV_ENUMERATE_SNAPSHOTS \
493adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x19, \
494adee6784SGordon Ross 	METHOD_BUFFERED, FILE_READ_ACCESS)
495adee6784SGordon Ross /* Retrieve an opaque file reference for server-side data movement */
496adee6784SGordon Ross #define	FSCTL_SRV_REQUEST_RESUME_KEY \
497adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x1e, \
498adee6784SGordon Ross 	METHOD_BUFFERED, FILE_ANY_ACCESS)
499adee6784SGordon Ross #define	FSCTL_LMR_GET_LINK_TRACKING_INFORMATION \
500adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x3a, \
501adee6784SGordon Ross 	METHOD_BUFFERED, FILE_ANY_ACCESS)
502adee6784SGordon Ross #define	FSCTL_LMR_SET_LINK_TRACKING_INFORMATION \
503adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x3b, \
504adee6784SGordon Ross 	METHOD_BUFFERED, FILE_ANY_ACCESS)
505adee6784SGordon Ross /* server-side data movement */
506adee6784SGordon Ross #define	FSCTL_SRV_COPYCHUNK \
507adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x3c, \
508adee6784SGordon Ross 	METHOD_OUT_DIRECT, FILE_READ_ACCESS)
509adee6784SGordon Ross /* server-side data movement */
510adee6784SGordon Ross #define	FSCTL_SRV_COPYCHUNK_WRITE \
511adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x3c, \
512adee6784SGordon Ross 	METHOD_OUT_DIRECT, FILE_WRITE_ACCESS)
513adee6784SGordon Ross #define	FSCTL_SRV_NOTIFY_TRANSACTION \
514adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x46, \
515adee6784SGordon Ross 	METHOD_BUFFERED, FILE_WRITE_ACCESS)
516adee6784SGordon Ross #define	FSCTL_SRV_READ_HASH \
517adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x6e, \
518adee6784SGordon Ross 	METHOD_NEITHER, FILE_READ_ACCESS)
519adee6784SGordon Ross #define	FSCTL_SRV_UNKNOWN_x71 \
520adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x71, \
521adee6784SGordon Ross 	METHOD_BUFFERED, FILE_ANY_ACCESS)
522adee6784SGordon Ross #define	FSCTL_LMR_REQUEST_RESILIENCY \
523adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x75, \
524adee6784SGordon Ross 	METHOD_BUFFERED, FILE_ANY_ACCESS)
525adee6784SGordon Ross #define	FSCTL_QUERY_NETWORK_INTERFACE_INFO \
526adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x7f, \
527adee6784SGordon Ross 	METHOD_BUFFERED, FILE_ANY_ACCESS)
528adee6784SGordon Ross #define	FSCTL_VALIDATE_NEGOTIATE_INFO \
529adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 0x81, \
530adee6784SGordon Ross 	METHOD_BUFFERED, FILE_ANY_ACCESS)
531adee6784SGordon Ross 
532adee6784SGordon Ross /* FILE_DEVICE_DFS */
533adee6784SGordon Ross #define	FSCTL_DFS_GET_REFERRALS \
534adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_DFS, 0x65, METHOD_BUFFERED, FILE_ANY_ACCESS)
535adee6784SGordon Ross #define	FSCTL_DFS_GET_REFERRALS_EX \
536adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_DFS, 0x6c, METHOD_BUFFERED, FILE_ANY_ACCESS)
537adee6784SGordon Ross 
538adee6784SGordon Ross /* FILE_DEVICE_NAMED_PIPE */
539adee6784SGordon Ross #define	FSCTL_PIPE_PEEK \
540adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS)
541adee6784SGordon Ross #define	FSCTL_PIPE_TRANSCEIVE \
542adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, \
543adee6784SGordon Ross 	FILE_READ_ACCESS | FILE_WRITE_ACCESS)
544adee6784SGordon Ross #define	FSCTL_PIPE_WAIT \
545adee6784SGordon Ross 	CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
546adee6784SGordon Ross 
547adee6784SGordon Ross #endif /* _FILESYSTEMFSCTL_ */
548adee6784SGordon Ross 
549adee6784SGordon Ross #ifdef __cplusplus
550adee6784SGordon Ross }
551adee6784SGordon Ross #endif
552adee6784SGordon Ross 
553adee6784SGordon Ross #endif /* _SMB_WINIOCTL_H */
554