ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MinGW/include/winioctl.h
Revision: 1046
Committed: Mon Aug 29 13:19:38 2016 UTC (9 years, 1 month ago) by alloc
Content type: text/x-chdr
File size: 9936 byte(s)
Log Message:
Daodan: Added Windows MinGW and build batch file

File Contents

# Content
1 /*
2 * winioctl.h
3 *
4 * Windows IOCTL subsystem declarations and definitions; includes some
5 * elements in common with the Windows Device Driver Kit.
6 *
7 * $Id: winioctl.h,v ed94503bab84 2016/05/04 19:34:24 keithmarshall $
8 *
9 * Written by Anders Norlander <anorland@hem2.passagen.se>
10 * Copyright (C) 1999-2005, 2009-2011, 2015, MinGW.org Project.
11 *
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining a
14 * copy of this software and associated documentation files (the "Software"),
15 * to deal in the Software without restriction, including without limitation
16 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 * and/or sell copies of the Software, and to permit persons to whom the
18 * Software is furnished to do so, subject to the following conditions:
19 *
20 * The above copyright notice, this permission notice, and the following
21 * disclaimer shall be included in all copies or substantial portions of
22 * the Software.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
27 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
30 * DEALINGS IN THE SOFTWARE.
31 *
32 */
33 #ifndef _WINIOCTL_H
34 #define _WINIOCTL_H
35 #pragma GCC system_header
36
37 #define __WINIOCTL_H_SOURCED__
38
39 #ifndef _WINDOWS_H
40 /* FIXME: MSDN says that including <windows.h> should suffice to expose
41 * the content of this header, but this implementation does not satisfy
42 * that requirement. Furthermore, this implementation cannot itself be
43 * included, unless <windows.h>, (or at least the content from those of
44 * its subsidiary headers which define Microsoft's peculiar, obfuscated
45 * data types), has been included first; enforce this requirement.
46 */
47 #include <windows.h>
48 #endif
49
50 /* This file is required to provide a number of definitions which are
51 * duplicated in the Windows DDK headers; retrieve these definitions by
52 * selective inclusion from the appropriate DDK header files...
53 */
54 #include <ddk/winddk.h>
55 #include <ddk/ntdddisk.h>
56
57 _BEGIN_C_DECLS
58
59 #define HIST_NO_OF_BUCKETS 24
60 #define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET)
61 #define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM)
62
63 #define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE,10,METHOD_BUFFERED,FILE_ANY_ACCESS)
64 #define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,12,METHOD_BUFFERED,FILE_ANY_ACCESS)
65 #define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE,13,METHOD_BUFFERED,FILE_ANY_ACCESS)
66 #define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS)
67 #define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
68 #define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE,16,METHOD_BUFFERED,FILE_ANY_ACCESS)
69 #define IOCTL_DISK_UPDATE_PROPERTIES CTL_CODE(IOCTL_DISK_BASE,0x50,METHOD_BUFFERED,FILE_ANY_ACCESS)
70 #define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE,0x201,METHOD_BUFFERED,FILE_READ_ACCESS)
71 #define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x202,METHOD_BUFFERED,FILE_READ_ACCESS)
72 #define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x203,METHOD_BUFFERED,FILE_READ_ACCESS)
73 #define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE,0x205,METHOD_BUFFERED,FILE_READ_ACCESS)
74 #define IOCTL_DISK_REMOVE_DEVICE CTL_CODE(IOCTL_DISK_BASE,0x207,METHOD_BUFFERED,FILE_READ_ACCESS)
75 #define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS)
76
77 /* FIXME: also in ddk/ntddvol.h; should be factored out.
78 */
79 #define IOCTL_VOLUME_BASE ((ULONG)('V'))
80 #define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
81 #define IOCTL_VOLUME_IS_CLUSTERED CTL_CODE(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
82
83 #define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS)
84 #define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,7,METHOD_BUFFERED,FILE_ANY_ACCESS)
85 #define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,8,METHOD_BUFFERED,FILE_ANY_ACCESS)
86 #define FSCTL_MOUNT_DBLS_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,13,METHOD_BUFFERED,FILE_ANY_ACCESS)
87 #define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
88 #define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
89 #define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA)
90 #define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA)
91 #define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS)
92 #define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS)
93 #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS)
94 #define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_ANY_ACCESS)
95 #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,42,METHOD_BUFFERED,FILE_ANY_ACCESS)
96 #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,41,METHOD_BUFFERED,FILE_ANY_ACCESS)
97 #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,43,METHOD_BUFFERED,FILE_ANY_ACCESS)
98 #define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,49,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
99 #define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,32,METHOD_NEITHER,FILE_ANY_ACCESS)
100
101 typedef DWORD DEVICE_TYPE;
102
103 enum
104 { SERIAL_LSRMST_ESCAPE = 0,
105 SERIAL_LSRMST_LSR_DATA = 1,
106 SERIAL_LSRMST_LSR_NODATA = 2,
107 SERIAL_LSRMST_MST = 3
108 };
109
110 enum
111 { DISK_LOGGING_START = 0,
112 DISK_LOGGING_STOP = 1,
113 DISK_LOGGING_DUMP = 2,
114 DISK_BINNING = 3
115 };
116
117 typedef WORD BAD_TRACK_NUMBER, *PBAD_TRACK_NUMBER;
118 typedef enum _BIN_TYPES {RequestSize, RequestLocation} BIN_TYPES;
119
120 typedef
121 struct _BIN_RANGE
122 { LARGE_INTEGER StartValue;
123 LARGE_INTEGER Length;
124 } BIN_RANGE, *PBIN_RANGE;
125
126 typedef
127 struct _BIN_COUNT
128 { BIN_RANGE BinRange;
129 DWORD BinCount;
130 } BIN_COUNT, *PBIN_COUNT;
131
132 typedef
133 struct _BIN_RESULTS
134 { DWORD NumberOfBins;
135 BIN_COUNT BinCounts[1];
136 } BIN_RESULTS, *PBIN_RESULTS;
137
138 typedef
139 struct _DISK_RECORD
140 { LARGE_INTEGER ByteOffset;
141 LARGE_INTEGER StartTime;
142 LARGE_INTEGER EndTime;
143 PVOID VirtualAddress;
144 DWORD NumberOfBytes;
145 BYTE DeviceNumber;
146 BOOLEAN ReadRequest;
147 } DISK_RECORD, *PDISK_RECORD;
148
149 typedef
150 struct _DISK_LOGGING
151 { BYTE Function;
152 PVOID BufferAddress;
153 DWORD BufferSize;
154 } DISK_LOGGING, *PDISK_LOGGING;
155
156 typedef
157 struct DiskQuotaUserInformation
158 { LONGLONG QuotaUsed;
159 LONGLONG QuotaThreshold;
160 LONGLONG QuotaLimit;
161 } DISKQUOTA_USER_INFORMATION, *PDISKQUOTA_USER_INFORMATION;
162
163 typedef
164 struct _HISTOGRAM_BUCKET
165 { DWORD Reads;
166 DWORD Writes;
167 } HISTOGRAM_BUCKET, *PHISTOGRAM_BUCKET;
168
169 typedef
170 struct _DISK_HISTOGRAM
171 { LARGE_INTEGER DiskSize;
172 LARGE_INTEGER Start;
173 LARGE_INTEGER End;
174 LARGE_INTEGER Average;
175 LARGE_INTEGER AverageRead;
176 LARGE_INTEGER AverageWrite;
177 DWORD Granularity;
178 DWORD Size;
179 DWORD ReadCount;
180 DWORD WriteCount;
181 PHISTOGRAM_BUCKET Histogram;
182 } DISK_HISTOGRAM, *PDISK_HISTOGRAM;
183
184 typedef
185 struct _DISK_EXTENT
186 { DWORD DiskNumber;
187 LARGE_INTEGER StartingOffset;
188 LARGE_INTEGER ExtentLength;
189 } DISK_EXTENT, *PDISK_EXTENT;
190
191 typedef
192 struct _VOLUME_DISK_EXTENTS
193 { DWORD NumberOfDiskExtents;
194 DISK_EXTENT Extents[1];
195 } VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS;
196
197 typedef
198 struct _DRIVE_LAYOUT_INFORMATION
199 { DWORD PartitionCount;
200 DWORD Signature;
201 PARTITION_INFORMATION PartitionEntry[1];
202 } DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION;
203
204 typedef
205 struct _DRIVE_LAYOUT_INFORMATION_EX
206 { DWORD PartitionStyle;
207 DWORD PartitionCount;
208 _ANONYMOUS_UNION union
209 { DRIVE_LAYOUT_INFORMATION_MBR Mbr;
210 DRIVE_LAYOUT_INFORMATION_GPT Gpt;
211 };
212 PARTITION_INFORMATION_EX PartitionEntry[1];
213 } DRIVE_LAYOUT_INFORMATION_EX, *PDRIVE_LAYOUT_INFORMATION_EX;
214
215 typedef struct
216 { HANDLE FileHandle;
217 LARGE_INTEGER StartingVcn;
218 LARGE_INTEGER StartingLcn;
219 DWORD ClusterCount;
220 } MOVE_FILE_DATA, *PMOVE_FILE_DATA;
221
222 typedef
223 struct _PERF_BIN
224 { DWORD NumberOfBins;
225 DWORD TypeOfBin;
226 BIN_RANGE BinsRanges[1];
227 } PERF_BIN, *PPERF_BIN;
228
229 typedef
230 struct _PREVENT_MEDIA_REMOVAL
231 { BOOLEAN PreventMediaRemoval;
232 } PREVENT_MEDIA_REMOVAL, *PPREVENT_MEDIA_REMOVAL;
233
234 typedef
235 struct RETRIEVAL_POINTERS_BUFFER
236 { DWORD ExtentCount;
237 LARGE_INTEGER StartingVcn;
238 struct
239 { LARGE_INTEGER NextVcn;
240 LARGE_INTEGER Lcn;
241 } Extents[1];
242 } RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;
243
244 typedef struct
245 { LARGE_INTEGER StartingLcn;
246 } STARTING_LCN_INPUT_BUFFER, *PSTARTING_LCN_INPUT_BUFFER;
247
248 typedef struct
249 { LARGE_INTEGER StartingVcn;
250 } STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER;
251
252 typedef struct
253 { LARGE_INTEGER StartingLcn;
254 LARGE_INTEGER BitmapSize;
255 BYTE Buffer[1];
256 } VOLUME_BITMAP_BUFFER, *PVOLUME_BITMAP_BUFFER;
257
258 typedef struct
259 { LARGE_INTEGER VolumeSerialNumber;
260 LARGE_INTEGER NumberSectors;
261 LARGE_INTEGER TotalClusters;
262 LARGE_INTEGER FreeClusters;
263 LARGE_INTEGER TotalReserved;
264 DWORD BytesPerSector;
265 DWORD BytesPerCluster;
266 DWORD BytesPerFileRecordSegment;
267 DWORD ClustersPerFileRecordSegment;
268 LARGE_INTEGER MftValidDataLength;
269 LARGE_INTEGER MftStartLcn;
270 LARGE_INTEGER Mft2StartLcn;
271 LARGE_INTEGER MftZoneStart;
272 LARGE_INTEGER MftZoneEnd;
273 } NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER;
274
275 _END_C_DECLS
276
277 #undef __WINIOCTL_H_SOURCED__
278 #endif /* _WINIOCTL_H: $RCSfile: winioctl.h,v $: end of file */