source: trunk/include/win/winioctl.h@ 10367

Last change on this file since 10367 was 8426, checked in by sandervl, 23 years ago

header updates

File size: 28.3 KB
Line 
1#ifndef __WINE_WINIOCTL_H
2#define __WINE_WINIOCTL_H
3
4#ifndef OS2_INCLUDED
5#include "winnt.h"
6#else
7#ifndef FILE_READ_DATA
8#define FILE_READ_DATA 0x0001 /* file & pipe */
9#endif
10
11#ifndef FILE_WRITE_DATA
12#define FILE_WRITE_DATA 0x0002 /* file & pipe */
13#endif
14
15#endif
16
17#define CTL_CODE( DeviceType, Function, Method, Access ) ( \
18 (DWORD)((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
19)
20
21#define DEVICE_TYPE DWORD
22
23#define FILE_DEVICE_BEEP 0x00000001
24#define FILE_DEVICE_CD_ROM 0x00000002
25#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
26#define FILE_DEVICE_CONTROLLER 0x00000004
27#define FILE_DEVICE_DATALINK 0x00000005
28#define FILE_DEVICE_DFS 0x00000006
29#define FILE_DEVICE_DISK 0x00000007
30#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
31#define FILE_DEVICE_FILE_SYSTEM 0x00000009
32#define FILE_DEVICE_INPORT_PORT 0x0000000a
33#define FILE_DEVICE_KEYBOARD 0x0000000b
34#define FILE_DEVICE_MAILSLOT 0x0000000c
35#define FILE_DEVICE_MIDI_IN 0x0000000d
36#define FILE_DEVICE_MIDI_OUT 0x0000000e
37#define FILE_DEVICE_MOUSE 0x0000000f
38#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
39#define FILE_DEVICE_NAMED_PIPE 0x00000011
40#define FILE_DEVICE_NETWORK 0x00000012
41#define FILE_DEVICE_NETWORK_BROWSER 0x00000013
42#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
43#define FILE_DEVICE_NULL 0x00000015
44#define FILE_DEVICE_PARALLEL_PORT 0x00000016
45#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
46#define FILE_DEVICE_PRINTER 0x00000018
47#define FILE_DEVICE_SCANNER 0x00000019
48#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
49#define FILE_DEVICE_SERIAL_PORT 0x0000001b
50#define FILE_DEVICE_SCREEN 0x0000001c
51#define FILE_DEVICE_SOUND 0x0000001d
52#define FILE_DEVICE_STREAMS 0x0000001e
53#define FILE_DEVICE_TAPE 0x0000001f
54#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
55#define FILE_DEVICE_TRANSPORT 0x00000021
56#define FILE_DEVICE_UNKNOWN 0x00000022
57#define FILE_DEVICE_VIDEO 0x00000023
58#define FILE_DEVICE_VIRTUAL_DISK 0x00000024
59#define FILE_DEVICE_WAVE_IN 0x00000025
60#define FILE_DEVICE_WAVE_OUT 0x00000026
61#define FILE_DEVICE_8042_PORT 0x00000027
62#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
63#define FILE_DEVICE_BATTERY 0x00000029
64#define FILE_DEVICE_BUS_EXTENDER 0x0000002a
65#define FILE_DEVICE_MODEM 0x0000002b
66#define FILE_DEVICE_VDM 0x0000002c
67#define FILE_DEVICE_MASS_STORAGE 0x0000002d
68#define FILE_DEVICE_SMB 0x0000002e
69#define FILE_DEVICE_KS 0x0000002f
70#define FILE_DEVICE_CHANGER 0x00000030
71#define FILE_DEVICE_SMARTCARD 0x00000031
72#define FILE_DEVICE_ACPI 0x00000032
73#define FILE_DEVICE_DVD 0x00000033
74#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
75#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035
76#define FILE_DEVICE_DFS_VOLUME 0x00000036
77
78#define METHOD_BUFFERED 0
79#define METHOD_IN_DIRECT 1
80#define METHOD_OUT_DIRECT 2
81#define METHOD_NEITHER 3
82
83#define FILE_ANY_ACCESS 0
84#define FILE_READ_ACCESS FILE_READ_DATA /* file & pipe */
85#define FILE_WRITE_ACCESS FILE_WRITE_DATA /* file & pipe */
86
87#define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
88#define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
89#define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
90#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
91#define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
92#define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
93#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
94#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
95#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
96/* decommissioned fsctl value 9 */
97#define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
98#define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
99#define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
100/* decommissioned fsctl value 13 */
101#define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS)
102#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
103#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
104/* decommissioned fsctl value 17 */
105/* decommissioned fsctl value 18 */
106#define FSCTL_MARK_AS_SYSTEM_HIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS)
107#define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
108#define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
109#define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
110#define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
111#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
112/* Start: _WIN32_WINNT >= 0x0400 */
113#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
114#define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
115#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS)
116#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS)
117#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
118#define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
119#define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
120#define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS)
121/* End: _WIN32_WINNT >= 0x0400 */
122
123/* Start: _WIN32_WINNT >= 0x0500 */
124#define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
125#define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS)
126#define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
127/* decommissioned fsctl value 36 */
128#define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37, METHOD_NEITHER, FILE_ANY_ACCESS)
129#define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_WRITE_DATA)
130#define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
131#define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_WRITE_DATA)
132#define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_WRITE_DATA)
133#define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
134#define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_WRITE_DATA)
135#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_READ_DATA)
136#define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA)
137#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_READ_DATA)
138#define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_WRITE_DATA
139#define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS)
140#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_WRITE_DATA)
141#define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA)
142#define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA)
143#define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA)
144#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_BUFFERED, FILE_ANY_ACCESS)
145#define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS)
146#define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_ANY_ACCESS)
147#define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_ANY_ACCESS)
148#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_READ_DATA)
149#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_READ_DATA)
150#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_READ_DATA)
151#define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
152/* End: _WIN32_WINNT >= 0x0500 */
153
154
155
156//Storage IOCTLs
157
158typedef enum _MEDIA_TYPE {
159 Unknown,
160 F5_1Pt2_512,
161 F3_1Pt44_512,
162 F3_2Pt88_512,
163 F3_20Pt8_512,
164 F3_720_512,
165 F5_360_512,
166 F5_320_512,
167 F5_320_1024,
168 F5_180_512,
169 F5_160_512,
170 RemovableMedia,
171 FixedMedia,
172 F3_120M_512,
173 F3_640_512,
174 F5_640_512,
175 F5_720_512,
176 F3_1Pt2_512,
177 F3_1Pt23_1024,
178 F5_1Pt23_1024,
179 F3_128Mb_512,
180 F3_230Mb_512,
181 F8_256_128
182} MEDIA_TYPE, *PMEDIA_TYPE;
183
184typedef struct _DISK_GEOMETRY {
185 LARGE_INTEGER Cylinders;
186 MEDIA_TYPE MediaType;
187 DWORD TracksPerCylinder;
188 DWORD SectorsPerTrack;
189 DWORD BytesPerSector;
190} DISK_GEOMETRY, *PDISK_GEOMETRY;
191
192#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
193#define IOCTL_STORAGE_CHECK_VERIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
194#define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
195#define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
196#define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
197#define IOCTL_STORAGE_RESERVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
198#define IOCTL_STORAGE_RELEASE CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
199#define IOCTL_STORAGE_FIND_NEW_DEVICES CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
200
201#define IOCTL_STORAGE_GET_MEDIA_TYPES CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
202#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS)
203
204#define IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
205#define IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
206#define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS)
207
208
209
210//CDROM IOCTLs
211
212#define IOCTL_CDROM_BASE FILE_DEVICE_CD_ROM
213
214#define IOCTL_CDROM_UNLOAD_DRIVER CTL_CODE(IOCTL_CDROM_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)
215#define IOCTL_CDROM_READ_TOC CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
216#define IOCTL_CDROM_GET_CONTROL CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS)
217#define IOCTL_CDROM_PLAY_AUDIO_MSF CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
218#define IOCTL_CDROM_SEEK_AUDIO_MSF CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
219#define IOCTL_CDROM_STOP_AUDIO CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
220#define IOCTL_CDROM_PAUSE_AUDIO CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
221#define IOCTL_CDROM_RESUME_AUDIO CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
222#define IOCTL_CDROM_GET_VOLUME CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
223#define IOCTL_CDROM_SET_VOLUME CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
224#define IOCTL_CDROM_READ_Q_CHANNEL CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS)
225#define IOCTL_CDROM_GET_LAST_SESSION CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS)
226#define IOCTL_CDROM_RAW_READ CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT, FILE_READ_ACCESS)
227#define IOCTL_CDROM_DISK_TYPE CTL_CODE(IOCTL_CDROM_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
228#define IOCTL_CDROM_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS)
229#define IOCTL_CDROM_CHECK_VERIFY CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
230#define IOCTL_CDROM_MEDIA_REMOVAL CTL_CODE(IOCTL_CDROM_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
231#define IOCTL_CDROM_EJECT_MEDIA CTL_CODE(IOCTL_CDROM_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
232#define IOCTL_CDROM_LOAD_MEDIA CTL_CODE(IOCTL_CDROM_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
233#define IOCTL_CDROM_RESERVE CTL_CODE(IOCTL_CDROM_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
234#define IOCTL_CDROM_RELEASE CTL_CODE(IOCTL_CDROM_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
235#define IOCTL_CDROM_FIND_NEW_DEVICES CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
236#define IOCTL_CDROM_SIMBAD CTL_CODE(IOCTL_CDROM_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS)
237
238#define MAXIMUM_NUMBER_TRACKS 100
239#define MAXIMUM_CDROM_SIZE 804
240
241typedef struct _TRACK_DATA {
242 UCHAR Reserved;
243 UCHAR Control : 4;
244 UCHAR Adr : 4;
245 UCHAR TrackNumber;
246 UCHAR Reserved1;
247 UCHAR Address[4];
248} TRACK_DATA, *PTRACK_DATA;
249
250typedef struct _CDROM_TOC {
251 UCHAR Length[2];
252 UCHAR FirstTrack;
253 UCHAR LastTrack;
254 TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS];
255} CDROM_TOC, *PCDROM_TOC;
256
257#define CDROM_TOC_SIZE sizeof(CDROM_TOC)
258
259typedef struct _CDROM_PLAY_AUDIO_MSF {
260 UCHAR StartingM;
261 UCHAR StartingS;
262 UCHAR StartingF;
263 UCHAR EndingM;
264 UCHAR EndingS;
265 UCHAR EndingF;
266} CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF;
267
268typedef struct _CDROM_SEEK_AUDIO_MSF {
269 UCHAR M;
270 UCHAR S;
271 UCHAR F;
272} CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF;
273
274typedef struct _CDROM_DISK_DATA {
275 ULONG DiskData;
276} CDROM_DISK_DATA, *PCDROM_DISK_DATA;
277
278#define CDROM_DISK_AUDIO_TRACK (0x00000001)
279#define CDROM_DISK_DATA_TRACK (0x00000002)
280
281
282#define IOCTL_CDROM_SUB_Q_CHANNEL 0x00
283#define IOCTL_CDROM_CURRENT_POSITION 0x01
284#define IOCTL_CDROM_MEDIA_CATALOG 0x02
285#define IOCTL_CDROM_TRACK_ISRC 0x03
286
287typedef struct _CDROM_SUB_Q_DATA_FORMAT {
288 UCHAR Format;
289 UCHAR Track;
290} CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT;
291
292
293typedef struct _SUB_Q_HEADER {
294 UCHAR Reserved;
295 UCHAR AudioStatus;
296 UCHAR DataLength[2];
297} SUB_Q_HEADER, *PSUB_Q_HEADER;
298
299typedef struct _SUB_Q_CURRENT_POSITION {
300 SUB_Q_HEADER Header;
301 UCHAR FormatCode;
302 UCHAR Control : 4;
303 UCHAR ADR : 4;
304 UCHAR TrackNumber;
305 UCHAR IndexNumber;
306 UCHAR AbsoluteAddress[4];
307 UCHAR TrackRelativeAddress[4];
308} SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION;
309
310typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER {
311 SUB_Q_HEADER Header;
312 UCHAR FormatCode;
313 UCHAR Reserved[3];
314 UCHAR Reserved1 : 7;
315 UCHAR Mcval : 1;
316 UCHAR MediaCatalog[15];
317} SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER;
318
319typedef struct _SUB_Q_TRACK_ISRC {
320 SUB_Q_HEADER Header;
321 UCHAR FormatCode;
322 UCHAR Reserved0;
323 UCHAR Track;
324 UCHAR Reserved1;
325 UCHAR Reserved2 : 7;
326 UCHAR Tcval : 1;
327 UCHAR TrackIsrc[15];
328} SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC;
329
330typedef union _SUB_Q_CHANNEL_DATA {
331 SUB_Q_CURRENT_POSITION CurrentPosition;
332 SUB_Q_MEDIA_CATALOG_NUMBER MediaCatalog;
333 SUB_Q_TRACK_ISRC TrackIsrc;
334} SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA;
335
336#define AUDIO_STATUS_NOT_SUPPORTED 0x00
337#define AUDIO_STATUS_IN_PROGRESS 0x11
338#define AUDIO_STATUS_PAUSED 0x12
339#define AUDIO_STATUS_PLAY_COMPLETE 0x13
340#define AUDIO_STATUS_PLAY_ERROR 0x14
341#define AUDIO_STATUS_NO_STATUS 0x15
342
343#define ADR_NO_MODE_INFORMATION 0x0
344#define ADR_ENCODES_CURRENT_POSITION 0x1
345#define ADR_ENCODES_MEDIA_CATALOG 0x2
346#define ADR_ENCODES_ISRC 0x3
347
348#define AUDIO_WITH_PREEMPHASIS 0x1
349#define DIGITAL_COPY_PERMITTED 0x2
350#define AUDIO_DATA_TRACK 0x4
351#define TWO_FOUR_CHANNEL_AUDIO 0x8
352
353typedef struct _CDROM_AUDIO_CONTROL {
354 UCHAR LbaFormat;
355 USHORT LogicalBlocksPerSecond;
356} CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL;
357
358typedef struct _VOLUME_CONTROL {
359 UCHAR PortVolume[4];
360} VOLUME_CONTROL, *PVOLUME_CONTROL;
361
362typedef enum _TRACK_MODE_TYPE {
363 YellowMode2,
364 XAForm2,
365 CDDA
366} TRACK_MODE_TYPE, *PTRACK_MODE_TYPE;
367
368typedef struct _RAW_READ_INFO {
369 LARGE_INTEGER DiskOffset;
370 ULONG SectorCount;
371 TRACK_MODE_TYPE TrackMode;
372} RAW_READ_INFO, *PRAW_READ_INFO;
373
374//Disk IOCTLs
375
376typedef struct _PARTITION_INFORMATION {
377 LARGE_INTEGER StartingOffset;
378 LARGE_INTEGER PartitionLength;
379 DWORD HiddenSectors;
380 DWORD PartitionNumber;
381 BYTE PartitionType;
382 BYTE BootIndicator;
383 BYTE RecognizedPartition;
384 BYTE RewritePartition;
385} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
386
387typedef struct _SET_PARTITION_INFORMATION {
388 BYTE PartitionType;
389} SET_PARTITION_INFORMATION, *PSET_PARTITION_INFORMATION;
390
391#define IOCTL_DISK_BASE FILE_DEVICE_DISK
392#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
393#define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
394#define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
395#define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
396#define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
397#define IOCTL_DISK_VERIFY CTL_CODE(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED, FILE_ANY_ACCESS)
398#define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
399#define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
400#define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
401#define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS)
402#define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE, 0x000a, METHOD_BUFFERED, FILE_ANY_ACCESS)
403#define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(IOCTL_DISK_BASE, 0x000b, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
404#define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE, 0x000c, METHOD_BUFFERED, FILE_ANY_ACCESS)
405#define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE, 0x000d, METHOD_BUFFERED, FILE_ANY_ACCESS)
406#define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE, 0x000e, METHOD_BUFFERED, FILE_ANY_ACCESS)
407#define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE, 0x000f, METHOD_BUFFERED, FILE_ANY_ACCESS)
408#define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
409#define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
410#define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
411#define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
412#define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
413#define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
414#define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
415#define IOCTL_DISK_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
416#define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
417
418
419/* Start: For _WIN32_WINNT >= 0x0400 */
420#define IOCTL_DISK_CONTROLLER_NUMBER CTL_CODE(IOCTL_DISK_BASE, 0x0011, METHOD_BUFFERED, FILE_ANY_ACCESS)
421#define SMART_GET_VERSION CTL_CODE(IOCTL_DISK_BASE, 0x0020, METHOD_BUFFERED, FILE_READ_ACCESS)
422#define SMART_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
423#define SMART_RCV_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
424/* End: For _WIN32_WINNT >= 0x0400 */
425
426#define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS)
427
428
429/* Return Codes... should these be the same as something somewhere? */
430#define PARTITION_ENTRY_UNUSED 0x00 /* Entry unused */
431#define PARTITION_FAT_12 0x01 /* 12-bit FAT entries */
432#define PARTITION_XENIX_1 0x02 /* Xenix */
433#define PARTITION_XENIX_2 0x03 /* Xenix */
434#define PARTITION_FAT_16 0x04 /* 16-bit FAT entries */
435#define PARTITION_EXTENDED 0x05 /* Extended partition entry */
436#define PARTITION_HUGE 0x06 /* Huge partition MS-DOS V4 */
437#define PARTITION_IFS 0x07 /* IFS Partition */
438#define PARTITION_FAT32 0x0B /* FAT32 */
439#define PARTITION_FAT32_XINT13 0x0C /* FAT32 using extended int13 services */
440#define PARTITION_XINT13 0x0E /* Win95 partition using extended int13 services */
441#define PARTITION_XINT13_EXTENDED 0x0F /* Same as type 5 but uses extended int13 services */
442#define PARTITION_PREP 0x41 /* PowerPC Reference Platform (PReP) Boot Partition */
443#define PARTITION_LDM 0x42 /* Logical Disk Manager partition */
444#define PARTITION_UNIX 0x63 /* Unix */
445
446
447/* Device Io Stuff - Most VxD support.
448 * NOTE: All VxD messages seem to start with a hiword or 0
449 */
450typedef struct tagDIOCRegs {
451 DWORD reg_EBX;
452 DWORD reg_EDX;
453 DWORD reg_ECX;
454 DWORD reg_EAX;
455 DWORD reg_EDI;
456 DWORD reg_ESI;
457 DWORD reg_Flags;
458} DIOC_REGISTERS, *PDIOC_REGISTERS;
459
460/* Start VWIN32 information:
461 * VWIN32 is a VxD which supports the MSDOS Io routines.
462 */
463#define VWIN32_DIOC_DOS_IOCTL 1 /* This is the specified MS-DOS device I/O ctl - Interrupt 21h Function 4400h - 4411h */
464#define VWIN32_DIOC_DOS_INT25 2 /* This is the Absolute Disk Read command - Interrupt 25h */
465#define VWIN32_DIOC_DOS_INT26 3 /* This is the Absolute Disk Write command - Interrupt 25h */
466#define VWIN32_DIOC_DOS_INT13 4 /* This is Interrupt 13h commands */
467#define VWIN32_DIOC_SIMCTRLC 5 /* Simulate Ctrl-C */
468#define VWIN32_DIOC_DOS_DRIVEINFO 6 /* This is Interrupt 21h Function 730X commands */
469
470/* Important: All MS_DOS data structures must be packed on a one-byte boundary - good old 16 bit. */
471
472#include "pshpack1.h"
473typedef struct tagMID {
474 WORD midInfoLevel;
475 DWORD midSerialNum;
476 BYTE midVolLabel[11];
477 BYTE midFileSysType[8];
478} MID, *PMID;
479#include "poppack.h"
480
481/* End VWIN32 information */
482
483
484typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
485
486//Parallel Port IOCTLs
487typedef void* PPARALLEL_TRY_ALLOCATE_ROUTINE;
488typedef void* PPARALLEL_FREE_ROUTINE;
489typedef void* PPARALLEL_QUERY_WAITERS_ROUTINE;
490typedef void* PPARALLEL_SET_CHIP_MODE;
491typedef void* PPARALLEL_CLEAR_CHIP_MODE;
492typedef void* PPARALLEL_TRY_SELECT_ROUTINE;
493typedef void* PPARALLEL_DESELECT_ROUTINE;
494
495
496typedef struct _PARALLEL_PORT_INFORMATION {
497 PHYSICAL_ADDRESS OriginalController;
498 PUCHAR Controller;
499 ULONG SpanOfController;
500 PPARALLEL_TRY_ALLOCATE_ROUTINE TryAllocatePort;
501 PPARALLEL_FREE_ROUTINE FreePort;
502 PPARALLEL_QUERY_WAITERS_ROUTINE QueryNumWaiters;
503 PVOID Context;
504} PARALLEL_PORT_INFORMATION, *PPARALLEL_PORT_INFORMATION;
505
506
507typedef struct _PARALLEL_PNP_INFORMATION {
508 PHYSICAL_ADDRESS OriginalEcpController;
509 PUCHAR EcpController;
510 ULONG SpanOfEcpController;
511 ULONG PortNumber;
512 ULONG HardwareCapabilities;
513 PPARALLEL_SET_CHIP_MODE TrySetChipMode;
514 PPARALLEL_CLEAR_CHIP_MODE ClearChipMode;
515 ULONG FifoDepth;
516 ULONG FifoWidth;
517 PHYSICAL_ADDRESS EppControllerPhysicalAddress;
518 ULONG SpanOfEppController;
519 ULONG Ieee1284_3DeviceCount;
520 PPARALLEL_TRY_SELECT_ROUTINE TrySelectDevice;
521 PPARALLEL_DESELECT_ROUTINE DeselectDevice;
522 PVOID Context;
523 ULONG CurrentMode;
524 PWSTR PortName;
525} PARALLEL_PNP_INFORMATION, *PPARALLEL_PNP_INFORMATION;
526
527
528#define IOCTL_PARALLEL_PORT_BASE FILE_DEVICE_PARALLEL_PORT
529
530#define IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO CTL_CODE(FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
531#define IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO CTL_CODE(FILE_DEVICE_PARALLEL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
532
533
534//
535// These IOCTLs are handled by hard disk volumes.
536//
537
538#define IOCTL_VOLUME_BASE ((DWORD) 'V')
539
540#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
541
542//
543// Disk extent definition.
544//
545
546typedef struct _DISK_EXTENT {
547 DWORD DiskNumber;
548 DWORD Align1;
549 LARGE_INTEGER StartingOffset;
550 LARGE_INTEGER ExtentLength;
551} DISK_EXTENT, *PDISK_EXTENT;
552
553//
554// Output structure for IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS.
555//
556
557typedef struct _VOLUME_DISK_EXTENTS {
558 DWORD NumberOfDiskExtents;
559 DWORD Align1;
560 DISK_EXTENT Extents[1];
561} VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS;
562
563/*
564 * NT I/O-Manager
565 */
566
567/*
568 * structures for NtQueryVolumeInformationFile
569 * (wdm.h)
570 */
571
572/* FileFsVolumeInformation = 1 */
573typedef struct _FILE_FS_VOLUME_INFORMATION {
574 LARGE_INTEGER VolumeCreationTime;
575 ULONG VolumeSerialNumber;
576 ULONG VolumeLabelLength;
577 BYTE SupportsObjects;
578 WCHAR VolumeLabel[1];
579} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
580
581/* FileFsLabelInformation = 2 */
582/*
583 unknown
584*/
585
586/* FileFsSizeInformation = 3 */
587typedef struct _FILE_FS_SIZE_INFORMATION {
588 LARGE_INTEGER TotalAllocationUnits;
589 LARGE_INTEGER AvailableAllocationUnits;
590 ULONG SectorsPerAllocationUnit;
591 ULONG BytesPerSector;
592} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
593
594/* FileFsDeviceInformation = 4 */
595typedef struct _FILE_FS_DEVICE_INFORMATION {
596 DEVICE_TYPE DeviceType;
597 ULONG Characteristics;
598} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;
599
600/* FileFsAttributeInformation = 5 */
601typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
602 ULONG FileSystemAttribute;
603 LONG MaximumComponentNameLength;
604 ULONG FileSystemNameLength;
605 WCHAR FileSystemName[1];
606} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
607
608#endif
Note: See TracBrowser for help on using the repository browser.