| 1 | /* | 
 
 
 
 
 | 2 | * devioctl.h | 
 
 
 
 
 | 3 | * | 
 
 
 
 
 | 4 | * IOCTL definitions | 
 
 
 
 
 | 5 | * | 
 
 
 
 
 | 6 | * This file is part of the ReactOS PSDK package. | 
 
 
 
 
 | 7 | * | 
 
 
 
 
 | 8 | * Contributors: | 
 
 
 
 
 | 9 | *   Amine Khaldi | 
 
 
 
 
 | 10 | *   Timo Kreuzer (timo.kreuzer@reactos.org) | 
 
 
 
 
 | 11 | * | 
 
 
 
 
 | 12 | * THIS SOFTWARE IS NOT COPYRIGHTED | 
 
 
 
 
 | 13 | * | 
 
 
 
 
 | 14 | * This source code is offered for use in the public domain. You may | 
 
 
 
 
 | 15 | * use, modify or distribute it freely. | 
 
 
 
 
 | 16 | * | 
 
 
 
 
 | 17 | * This code is distributed in the hope that it will be useful but | 
 
 
 
 
 | 18 | * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY | 
 
 
 
 
 | 19 | * DISCLAIMED. This includes but is not limited to warranties of | 
 
 
 
 
 | 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
 
 
 
 
 | 21 | * | 
 
 
 
 
 | 22 | */ | 
 
 
 
 
 | 23 | #pragma once | 
 
 
 
 
 | 24 |  | 
 
 
 
 
 | 25 | #ifndef _DEVIOCTL_ | 
 
 
 
 
 | 26 | #define _DEVIOCTL_ | 
 
 
 
 
 | 27 |  | 
 
 
 
 
 | 28 |  | 
 
 
 
 
 | 29 | #define FILE_DEVICE_BEEP                  0x00000001 | 
 
 
 
 
 | 30 | #define FILE_DEVICE_CD_ROM                0x00000002 | 
 
 
 
 
 | 31 | #define FILE_DEVICE_CD_ROM_FILE_SYSTEM    0x00000003 | 
 
 
 
 
 | 32 | #define FILE_DEVICE_CONTROLLER            0x00000004 | 
 
 
 
 
 | 33 | #define FILE_DEVICE_DATALINK              0x00000005 | 
 
 
 
 
 | 34 | #define FILE_DEVICE_DFS                   0x00000006 | 
 
 
 
 
 | 35 | #define FILE_DEVICE_DISK                  0x00000007 | 
 
 
 
 
 | 36 | #define FILE_DEVICE_DISK_FILE_SYSTEM      0x00000008 | 
 
 
 
 
 | 37 | #define FILE_DEVICE_FILE_SYSTEM           0x00000009 | 
 
 
 
 
 | 38 | #define FILE_DEVICE_INPORT_PORT           0x0000000a | 
 
 
 
 
 | 39 | #define FILE_DEVICE_KEYBOARD              0x0000000b | 
 
 
 
 
 | 40 | #define FILE_DEVICE_MAILSLOT              0x0000000c | 
 
 
 
 
 | 41 | #define FILE_DEVICE_MIDI_IN               0x0000000d | 
 
 
 
 
 | 42 | #define FILE_DEVICE_MIDI_OUT              0x0000000e | 
 
 
 
 
 | 43 | #define FILE_DEVICE_MOUSE                 0x0000000f | 
 
 
 
 
 | 44 | #define FILE_DEVICE_MULTI_UNC_PROVIDER    0x00000010 | 
 
 
 
 
 | 45 | #define FILE_DEVICE_NAMED_PIPE            0x00000011 | 
 
 
 
 
 | 46 | #define FILE_DEVICE_NETWORK               0x00000012 | 
 
 
 
 
 | 47 | #define FILE_DEVICE_NETWORK_BROWSER       0x00000013 | 
 
 
 
 
 | 48 | #define FILE_DEVICE_NETWORK_FILE_SYSTEM   0x00000014 | 
 
 
 
 
 | 49 | #define FILE_DEVICE_NULL                  0x00000015 | 
 
 
 
 
 | 50 | #define FILE_DEVICE_PARALLEL_PORT         0x00000016 | 
 
 
 
 
 | 51 | #define FILE_DEVICE_PHYSICAL_NETCARD      0x00000017 | 
 
 
 
 
 | 52 | #define FILE_DEVICE_PRINTER               0x00000018 | 
 
 
 
 
 | 53 | #define FILE_DEVICE_SCANNER               0x00000019 | 
 
 
 
 
 | 54 | #define FILE_DEVICE_SERIAL_MOUSE_PORT     0x0000001a | 
 
 
 
 
 | 55 | #define FILE_DEVICE_SERIAL_PORT           0x0000001b | 
 
 
 
 
 | 56 | #define FILE_DEVICE_SCREEN                0x0000001c | 
 
 
 
 
 | 57 | #define FILE_DEVICE_SOUND                 0x0000001d | 
 
 
 
 
 | 58 | #define FILE_DEVICE_STREAMS               0x0000001e | 
 
 
 
 
 | 59 | #define FILE_DEVICE_TAPE                  0x0000001f | 
 
 
 
 
 | 60 | #define FILE_DEVICE_TAPE_FILE_SYSTEM      0x00000020 | 
 
 
 
 
 | 61 | #define FILE_DEVICE_TRANSPORT             0x00000021 | 
 
 
 
 
 | 62 | #define FILE_DEVICE_UNKNOWN               0x00000022 | 
 
 
 
 
 | 63 | #define FILE_DEVICE_VIDEO                 0x00000023 | 
 
 
 
 
 | 64 | #define FILE_DEVICE_VIRTUAL_DISK          0x00000024 | 
 
 
 
 
 | 65 | #define FILE_DEVICE_WAVE_IN               0x00000025 | 
 
 
 
 
 | 66 | #define FILE_DEVICE_WAVE_OUT              0x00000026 | 
 
 
 
 
 | 67 | #define FILE_DEVICE_8042_PORT             0x00000027 | 
 
 
 
 
 | 68 | #define FILE_DEVICE_NETWORK_REDIRECTOR    0x00000028 | 
 
 
 
 
 | 69 | #define FILE_DEVICE_BATTERY               0x00000029 | 
 
 
 
 
 | 70 | #define FILE_DEVICE_BUS_EXTENDER          0x0000002a | 
 
 
 
 
 | 71 | #define FILE_DEVICE_MODEM                 0x0000002b | 
 
 
 
 
 | 72 | #define FILE_DEVICE_VDM                   0x0000002c | 
 
 
 
 
 | 73 | #define FILE_DEVICE_MASS_STORAGE          0x0000002d | 
 
 
 
 
 | 74 | #define FILE_DEVICE_SMB                   0x0000002e | 
 
 
 
 
 | 75 | #define FILE_DEVICE_KS                    0x0000002f | 
 
 
 
 
 | 76 | #define FILE_DEVICE_CHANGER               0x00000030 | 
 
 
 
 
 | 77 | #define FILE_DEVICE_SMARTCARD             0x00000031 | 
 
 
 
 
 | 78 | #define FILE_DEVICE_ACPI                  0x00000032 | 
 
 
 
 
 | 79 | #define FILE_DEVICE_DVD                   0x00000033 | 
 
 
 
 
 | 80 | #define FILE_DEVICE_FULLSCREEN_VIDEO      0x00000034 | 
 
 
 
 
 | 81 | #define FILE_DEVICE_DFS_FILE_SYSTEM       0x00000035 | 
 
 
 
 
 | 82 | #define FILE_DEVICE_DFS_VOLUME            0x00000036 | 
 
 
 
 
 | 83 | #define FILE_DEVICE_SERENUM               0x00000037 | 
 
 
 
 
 | 84 | #define FILE_DEVICE_TERMSRV               0x00000038 | 
 
 
 
 
 | 85 | #define FILE_DEVICE_KSEC                  0x00000039 | 
 
 
 
 
 | 86 | #define FILE_DEVICE_FIPS                  0x0000003A | 
 
 
 
 
 | 87 | #define FILE_DEVICE_INFINIBAND            0x0000003B | 
 
 
 
 
 | 88 | #define FILE_DEVICE_VMBUS                 0x0000003E | 
 
 
 
 
 | 89 | #define FILE_DEVICE_CRYPT_PROVIDER        0x0000003F | 
 
 
 
 
 | 90 | #define FILE_DEVICE_WPD                   0x00000040 | 
 
 
 
 
 | 91 | #define FILE_DEVICE_BLUETOOTH             0x00000041 | 
 
 
 
 
 | 92 | #define FILE_DEVICE_MT_COMPOSITE          0x00000042 | 
 
 
 
 
 | 93 | #define FILE_DEVICE_MT_TRANSPORT          0x00000043 | 
 
 
 
 
 | 94 | #define FILE_DEVICE_BIOMETRIC             0x00000044 | 
 
 
 
 
 | 95 | #define FILE_DEVICE_PMI                   0x00000045 | 
 
 
 
 
 | 96 |  | 
 
 
 
 
 | 97 | /* DEVICE_OBJECT.DeviceType */ | 
 
 
 
 
 | 98 | #define DEVICE_TYPE ULONG | 
 
 
 
 
 | 99 |  | 
 
 
 
 
 | 100 | #define CTL_CODE(DeviceType, Function, Method, Access) \ | 
 
 
 
 
 | 101 | (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) | 
 
 
 
 
 | 102 |  | 
 
 
 
 
 | 103 | #define DEVICE_TYPE_FROM_CTL_CODE(ctl) (((ULONG) (ctl & 0xffff0000)) >> 16) | 
 
 
 
 
 | 104 |  | 
 
 
 
 
 | 105 | #define METHOD_FROM_CTL_CODE(ctrlCode)          ((ULONG)(ctrlCode & 3)) | 
 
 
 
 
 | 106 |  | 
 
 
 
 
 | 107 | #define METHOD_BUFFERED                   0 | 
 
 
 
 
 | 108 | #define METHOD_IN_DIRECT                  1 | 
 
 
 
 
 | 109 | #define METHOD_OUT_DIRECT                 2 | 
 
 
 
 
 | 110 | #define METHOD_NEITHER                    3 | 
 
 
 
 
 | 111 |  | 
 
 
 
 
 | 112 | #define METHOD_DIRECT_TO_HARDWARE       METHOD_IN_DIRECT | 
 
 
 
 
 | 113 | #define METHOD_DIRECT_FROM_HARDWARE     METHOD_OUT_DIRECT | 
 
 
 
 
 | 114 |  | 
 
 
 
 
 | 115 | #define FILE_ANY_ACCESS                   0x00000000 | 
 
 
 
 
 | 116 | #define FILE_SPECIAL_ACCESS               FILE_ANY_ACCESS | 
 
 
 
 
 | 117 | #define FILE_READ_ACCESS                  0x00000001 | 
 
 
 
 
 | 118 | #define FILE_WRITE_ACCESS                 0x00000002 | 
 
 
 
 
 | 119 |  | 
 
 
 
 
 | 120 |  | 
 
 
 
 
 | 121 | #endif /*_DEVIOCTL_ */ |