Support unrar64.dll
[xy_vsfilter.git] / include / winddk / devioctl.h
blobb8798266ecf271a53473f129a02257a12b9eb1d1
1 /*++ BUILD Version: 0004 // Increment this if a change has global effects
3 Copyright (c) 1992-1999 Microsoft Corporation
5 Module Name:
7 devioctl.h
9 Abstract:
11 This module contains
13 Author:
15 Andre Vachon (andreva) 21-Feb-1992
18 Revision History:
21 --*/
23 // begin_winioctl
25 #ifndef _DEVIOCTL_
26 #define _DEVIOCTL_
28 // begin_ntddk begin_wdm begin_nthal begin_ntifs
30 // Define the various device type values. Note that values used by Microsoft
31 // Corporation are in the range 0-32767, and 32768-65535 are reserved for use
32 // by customers.
35 #define DEVICE_TYPE ULONG
37 #define FILE_DEVICE_BEEP 0x00000001
38 #define FILE_DEVICE_CD_ROM 0x00000002
39 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
40 #define FILE_DEVICE_CONTROLLER 0x00000004
41 #define FILE_DEVICE_DATALINK 0x00000005
42 #define FILE_DEVICE_DFS 0x00000006
43 #define FILE_DEVICE_DISK 0x00000007
44 #define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
45 #define FILE_DEVICE_FILE_SYSTEM 0x00000009
46 #define FILE_DEVICE_INPORT_PORT 0x0000000a
47 #define FILE_DEVICE_KEYBOARD 0x0000000b
48 #define FILE_DEVICE_MAILSLOT 0x0000000c
49 #define FILE_DEVICE_MIDI_IN 0x0000000d
50 #define FILE_DEVICE_MIDI_OUT 0x0000000e
51 #define FILE_DEVICE_MOUSE 0x0000000f
52 #define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
53 #define FILE_DEVICE_NAMED_PIPE 0x00000011
54 #define FILE_DEVICE_NETWORK 0x00000012
55 #define FILE_DEVICE_NETWORK_BROWSER 0x00000013
56 #define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
57 #define FILE_DEVICE_NULL 0x00000015
58 #define FILE_DEVICE_PARALLEL_PORT 0x00000016
59 #define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
60 #define FILE_DEVICE_PRINTER 0x00000018
61 #define FILE_DEVICE_SCANNER 0x00000019
62 #define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
63 #define FILE_DEVICE_SERIAL_PORT 0x0000001b
64 #define FILE_DEVICE_SCREEN 0x0000001c
65 #define FILE_DEVICE_SOUND 0x0000001d
66 #define FILE_DEVICE_STREAMS 0x0000001e
67 #define FILE_DEVICE_TAPE 0x0000001f
68 #define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
69 #define FILE_DEVICE_TRANSPORT 0x00000021
70 #define FILE_DEVICE_UNKNOWN 0x00000022
71 #define FILE_DEVICE_VIDEO 0x00000023
72 #define FILE_DEVICE_VIRTUAL_DISK 0x00000024
73 #define FILE_DEVICE_WAVE_IN 0x00000025
74 #define FILE_DEVICE_WAVE_OUT 0x00000026
75 #define FILE_DEVICE_8042_PORT 0x00000027
76 #define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
77 #define FILE_DEVICE_BATTERY 0x00000029
78 #define FILE_DEVICE_BUS_EXTENDER 0x0000002a
79 #define FILE_DEVICE_MODEM 0x0000002b
80 #define FILE_DEVICE_VDM 0x0000002c
81 #define FILE_DEVICE_MASS_STORAGE 0x0000002d
82 #define FILE_DEVICE_SMB 0x0000002e
83 #define FILE_DEVICE_KS 0x0000002f
84 #define FILE_DEVICE_CHANGER 0x00000030
85 #define FILE_DEVICE_SMARTCARD 0x00000031
86 #define FILE_DEVICE_ACPI 0x00000032
87 #define FILE_DEVICE_DVD 0x00000033
88 #define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
89 #define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035
90 #define FILE_DEVICE_DFS_VOLUME 0x00000036
91 #define FILE_DEVICE_SERENUM 0x00000037
92 #define FILE_DEVICE_TERMSRV 0x00000038
93 #define FILE_DEVICE_KSEC 0x00000039
94 #define FILE_DEVICE_FIPS 0x0000003A
97 // Macro definition for defining IOCTL and FSCTL function control codes. Note
98 // that function codes 0-2047 are reserved for Microsoft Corporation, and
99 // 2048-4095 are reserved for customers.
102 #define CTL_CODE( DeviceType, Function, Method, Access ) ( \
103 ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
107 // Macro to extract device type out of the device io control code
109 #define DEVICE_TYPE_FROM_CTL_CODE(ctrlCode) (((ULONG)(ctrlCode & 0xffff0000)) >> 16)
112 // Define the method codes for how buffers are passed for I/O and FS controls
115 #define METHOD_BUFFERED 0
116 #define METHOD_IN_DIRECT 1
117 #define METHOD_OUT_DIRECT 2
118 #define METHOD_NEITHER 3
121 // Define the access check value for any access
124 // The FILE_READ_ACCESS and FILE_WRITE_ACCESS constants are also defined in
125 // ntioapi.h as FILE_READ_DATA and FILE_WRITE_DATA. The values for these
126 // constants *MUST* always be in sync.
129 // FILE_SPECIAL_ACCESS is checked by the NT I/O system the same as FILE_ANY_ACCESS.
130 // The file systems, however, may add additional access checks for I/O and FS controls
131 // that use this value.
135 #define FILE_ANY_ACCESS 0
136 #define FILE_SPECIAL_ACCESS (FILE_ANY_ACCESS)
137 #define FILE_READ_ACCESS ( 0x0001 ) // file & pipe
138 #define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe
140 // end_ntddk end_wdm end_nthal end_ntifs
142 #endif // _DEVIOCTL_
144 // end_winioctl