master
  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_ */