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