source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/fltuserstructures.h@ 1167

Last change on this file since 1167 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 6.8 KB
Line 
1/**
2 * This file is part of the mingw-w64 runtime package.
3 * No warranty is given; refer to the file DISCLAIMER within this package.
4 */
5
6#ifndef __FLT_USER_STRUCTURES_H__
7#define __FLT_USER_STRUCTURES_H__
8
9#include <winapifamily.h>
10
11#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
12
13#if ((OSVER(NTDDI_VERSION) == NTDDI_WIN2K && SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WIN2KSP4)) \
14 || (OSVER(NTDDI_VERSION) == NTDDI_WINXP && SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WINXPSP2)) \
15 || (OSVER(NTDDI_VERSION) == NTDDI_WS03 && SPVER(NTDDI_VERSION) >= SPVER(NTDDI_WS03SP1)) \
16 || NTDDI_VERSION >= NTDDI_VISTA)
17
18#define FLTAPI NTAPI
19
20#define FILTER_NAME_MAX_CHARS 255
21#define INSTANCE_NAME_MAX_CHARS 255
22#define VOLUME_NAME_MAX_CHARS 1024
23
24#define FILTER_NAME_MAX_BYTES (FILTER_NAME_MAX_CHARS * sizeof (WCHAR))
25#define INSTANCE_NAME_MAX_BYTES (INSTANCE_NAME_MAX_CHARS * sizeof (WCHAR))
26#define VOLUME_NAME_MAX_BYTES (VOLUME_NAME_MAX_CHARS * sizeof (WCHAR))
27
28#define FLTFL_AGGREGATE_INFO_IS_MINIFILTER 1
29#define FLTFL_AGGREGATE_INFO_IS_LEGACYFILTER 2
30
31#if NTDDI_VERSION >= NTDDI_VISTA
32#define FLTFL_ASI_IS_MINIFILTER 1
33#define FLTFL_ASI_IS_LEGACYFILTER 2
34
35#define FLTFL_IASIL_DETACHED_VOLUME 1
36#endif
37
38#define FLTFL_IASIM_DETACHED_VOLUME 1
39
40#define FLTFL_IASI_IS_MINIFILTER 1
41#define FLTFL_IASI_IS_LEGACYFILTER 2
42
43#if NTDDI_VERSION >= NTDDI_VISTA
44#define FLTFL_VSI_DETACHED_VOLUME 1
45#endif
46
47typedef HANDLE HFILTER;
48typedef HANDLE HFILTER_INSTANCE;
49typedef HANDLE HFILTER_VOLUME;
50
51#if !defined (_NTDEF_) && !defined (_NTSTATUS_PSDK)
52#define _NTSTATUS_PSDK
53typedef LONG NTSTATUS, *PNTSTATUS;
54#endif
55
56typedef enum _FLT_FILESYSTEM_TYPE {
57 FLT_FSTYPE_UNKNOWN, FLT_FSTYPE_RAW, FLT_FSTYPE_NTFS, FLT_FSTYPE_FAT,
58 FLT_FSTYPE_CDFS, FLT_FSTYPE_UDFS, FLT_FSTYPE_LANMAN, FLT_FSTYPE_WEBDAV,
59 FLT_FSTYPE_RDPDR, FLT_FSTYPE_NFS, FLT_FSTYPE_MS_NETWARE, FLT_FSTYPE_NETWARE,
60 FLT_FSTYPE_BSUDF, FLT_FSTYPE_MUP, FLT_FSTYPE_RSFX, FLT_FSTYPE_ROXIO_UDF1,
61 FLT_FSTYPE_ROXIO_UDF2, FLT_FSTYPE_ROXIO_UDF3, FLT_FSTYPE_TACIT, FLT_FSTYPE_FS_REC,
62 FLT_FSTYPE_INCD, FLT_FSTYPE_INCD_FAT, FLT_FSTYPE_EXFAT, FLT_FSTYPE_PSFS,
63 FLT_FSTYPE_GPFS, FLT_FSTYPE_NPFS, FLT_FSTYPE_MSFS, FLT_FSTYPE_CSVFS,
64 FLT_FSTYPE_REFS, FLT_FSTYPE_OPENAFS
65} FLT_FILESYSTEM_TYPE, *PFLT_FILESYSTEM_TYPE;
66
67typedef enum _FILTER_INFORMATION_CLASS {
68 FilterFullInformation, FilterAggregateBasicInformation, FilterAggregateStandardInformation
69} FILTER_INFORMATION_CLASS, *PFILTER_INFORMATION_CLASS;
70
71typedef enum _INSTANCE_INFORMATION_CLASS {
72 InstanceBasicInformation, InstancePartialInformation,
73 InstanceFullInformation, InstanceAggregateStandardInformation
74} INSTANCE_INFORMATION_CLASS, *PINSTANCE_INFORMATION_CLASS;
75
76typedef enum _FILTER_VOLUME_INFORMATION_CLASS {
77 FilterVolumeBasicInformation, FilterVolumeStandardInformation
78} FILTER_VOLUME_INFORMATION_CLASS, *PFILTER_VOLUME_INFORMATION_CLASS;
79
80typedef struct _FILTER_FULL_INFORMATION {
81 ULONG NextEntryOffset;
82 ULONG FrameID;
83 ULONG NumberOfInstances;
84 USHORT FilterNameLength;
85 WCHAR FilterNameBuffer[1];
86} FILTER_FULL_INFORMATION, *PFILTER_FULL_INFORMATION;
87
88typedef struct _FILTER_AGGREGATE_BASIC_INFORMATION {
89 ULONG NextEntryOffset;
90 ULONG Flags;
91 union {
92 struct {
93 ULONG FrameID;
94 ULONG NumberOfInstances;
95 USHORT FilterNameLength;
96 USHORT FilterNameBufferOffset;
97 USHORT FilterAltitudeLength;
98 USHORT FilterAltitudeBufferOffset;
99 } MiniFilter;
100 struct {
101 USHORT FilterNameLength;
102 USHORT FilterNameBufferOffset;
103 } LegacyFilter;
104 } Type;
105} FILTER_AGGREGATE_BASIC_INFORMATION, *PFILTER_AGGREGATE_BASIC_INFORMATION;
106
107#if NTDDI_VERSION >= NTDDI_VISTA
108typedef struct _FILTER_AGGREGATE_STANDARD_INFORMATION {
109 ULONG NextEntryOffset;
110 ULONG Flags;
111 union {
112 struct {
113 ULONG Flags;
114 ULONG FrameID;
115 ULONG NumberOfInstances;
116 USHORT FilterNameLength;
117 USHORT FilterNameBufferOffset;
118 USHORT FilterAltitudeLength;
119 USHORT FilterAltitudeBufferOffset;
120 } MiniFilter;
121 struct {
122 ULONG Flags;
123 USHORT FilterNameLength;
124 USHORT FilterNameBufferOffset;
125 USHORT FilterAltitudeLength;
126 USHORT FilterAltitudeBufferOffset;
127 } LegacyFilter;
128 } Type;
129} FILTER_AGGREGATE_STANDARD_INFORMATION, *PFILTER_AGGREGATE_STANDARD_INFORMATION;
130#endif
131
132typedef struct _FILTER_VOLUME_BASIC_INFORMATION {
133 USHORT FilterVolumeNameLength;
134 WCHAR FilterVolumeName[1];
135} FILTER_VOLUME_BASIC_INFORMATION, *PFILTER_VOLUME_BASIC_INFORMATION;
136
137#if NTDDI_VERSION >= NTDDI_VISTA
138typedef struct _FILTER_VOLUME_STANDARD_INFORMATION {
139 ULONG NextEntryOffset;
140 ULONG Flags;
141 ULONG FrameID;
142 FLT_FILESYSTEM_TYPE FileSystemType;
143 USHORT FilterVolumeNameLength;
144 WCHAR FilterVolumeName[1];
145} FILTER_VOLUME_STANDARD_INFORMATION, *PFILTER_VOLUME_STANDARD_INFORMATION;
146#endif
147
148typedef struct _INSTANCE_BASIC_INFORMATION {
149 ULONG NextEntryOffset;
150 USHORT InstanceNameLength;
151 USHORT InstanceNameBufferOffset;
152} INSTANCE_BASIC_INFORMATION, *PINSTANCE_BASIC_INFORMATION;
153
154typedef struct _INSTANCE_PARTIAL_INFORMATION {
155 ULONG NextEntryOffset;
156 USHORT InstanceNameLength;
157 USHORT InstanceNameBufferOffset;
158 USHORT AltitudeLength;
159 USHORT AltitudeBufferOffset;
160} INSTANCE_PARTIAL_INFORMATION, *PINSTANCE_PARTIAL_INFORMATION;
161
162typedef struct _INSTANCE_FULL_INFORMATION {
163 ULONG NextEntryOffset;
164 USHORT InstanceNameLength;
165 USHORT InstanceNameBufferOffset;
166 USHORT AltitudeLength;
167 USHORT AltitudeBufferOffset;
168 USHORT VolumeNameLength;
169 USHORT VolumeNameBufferOffset;
170 USHORT FilterNameLength;
171 USHORT FilterNameBufferOffset;
172} INSTANCE_FULL_INFORMATION, *PINSTANCE_FULL_INFORMATION;
173
174#if NTDDI_VERSION >= NTDDI_VISTA
175typedef struct _INSTANCE_AGGREGATE_STANDARD_INFORMATION {
176 ULONG NextEntryOffset;
177 ULONG Flags;
178 union {
179 struct {
180 ULONG Flags;
181 ULONG FrameID;
182 FLT_FILESYSTEM_TYPE VolumeFileSystemType;
183 USHORT InstanceNameLength;
184 USHORT InstanceNameBufferOffset;
185 USHORT AltitudeLength;
186 USHORT AltitudeBufferOffset;
187 USHORT VolumeNameLength;
188 USHORT VolumeNameBufferOffset;
189 USHORT FilterNameLength;
190 USHORT FilterNameBufferOffset;
191#if NTDDI_VERSION >= NTDDI_WIN8
192 ULONG SupportedFeatures;
193#endif
194 } MiniFilter;
195 struct {
196 ULONG Flags;
197 USHORT AltitudeLength;
198 USHORT AltitudeBufferOffset;
199 USHORT VolumeNameLength;
200 USHORT VolumeNameBufferOffset;
201 USHORT FilterNameLength;
202 USHORT FilterNameBufferOffset;
203#if NTDDI_VERSION >= NTDDI_WIN8
204 ULONG SupportedFeatures;
205#endif
206 } LegacyFilter;
207 } Type;
208} INSTANCE_AGGREGATE_STANDARD_INFORMATION, *PINSTANCE_AGGREGATE_STANDARD_INFORMATION;
209#endif
210
211typedef struct _FILTER_MESSAGE_HEADER {
212 ULONG ReplyLength;
213 ULONGLONG MessageId;
214} FILTER_MESSAGE_HEADER, *PFILTER_MESSAGE_HEADER;
215
216typedef struct _FILTER_REPLY_HEADER {
217 NTSTATUS Status;
218 ULONGLONG MessageId;
219} FILTER_REPLY_HEADER, *PFILTER_REPLY_HEADER;
220#endif
221
222#endif /* WINAPI_PARTITION_DESKTOP. */
223
224#endif /* __FLT_USER_STRUCTURES_H__ */
Note: See TracBrowser for help on using the repository browser.