4 * This file is part of the ReactOS DDK package.
7 * Amine Khaldi (amine.khaldi@reactos.org)
9 * THIS SOFTWARE IS NOT COPYRIGHTED
11 * This source code is offered for use in the public domain. You may
12 * use, modify or distribute it freely.
14 * This code is distributed in the hope that it will be useful but
15 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
16 * DISCLAIMED. This includes but is not limited to warranties of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
22 #ifndef __FLT_USER_STRUCTURES_H__
23 #define __FLT_USER_STRUCTURES_H__
29 #define FILTER_NAME_MAX_CHARS 255
30 #define FILTER_NAME_MAX_BYTES (FILTER_NAME_MAX_CHARS * sizeof(WCHAR))
31 #define VOLUME_NAME_MAX_CHARS 1024
32 #define VOLUME_NAME_MAX_BYTES (VOLUME_NAME_MAX_CHARS * sizeof(WCHAR))
33 #define INSTANCE_NAME_MAX_CHARS 255
34 #define INSTANCE_NAME_MAX_BYTES (INSTANCE_NAME_MAX_CHARS * sizeof(WCHAR))
36 typedef HANDLE HFILTER
, HFILTER_INSTANCE
, HFILTER_VOLUME
;
39 typedef _Return_type_success_(return >= 0) LONG NTSTATUS
, *PNTSTATUS
;
42 /* Known File System Types */
44 typedef enum _FLT_FILESYSTEM_TYPE
{
55 FLT_FSTYPE_MS_NETWARE
,
60 FLT_FSTYPE_ROXIO_UDF1
,
61 FLT_FSTYPE_ROXIO_UDF2
,
62 FLT_FSTYPE_ROXIO_UDF3
,
73 } FLT_FILESYSTEM_TYPE
, *PFLT_FILESYSTEM_TYPE
;
75 typedef enum _FILTER_INFORMATION_CLASS
{
76 FilterFullInformation
,
77 FilterAggregateBasicInformation
,
78 FilterAggregateStandardInformation
79 } FILTER_INFORMATION_CLASS
, *PFILTER_INFORMATION_CLASS
;
81 typedef enum _FILTER_VOLUME_INFORMATION_CLASS
{
82 FilterVolumeBasicInformation
,
83 FilterVolumeStandardInformation
84 } FILTER_VOLUME_INFORMATION_CLASS
, *PFILTER_VOLUME_INFORMATION_CLASS
;
86 typedef enum _INSTANCE_INFORMATION_CLASS
{
87 InstanceBasicInformation
,
88 InstancePartialInformation
,
89 InstanceFullInformation
,
90 InstanceAggregateStandardInformation
91 } INSTANCE_INFORMATION_CLASS
, *PINSTANCE_INFORMATION_CLASS
;
93 typedef struct _FILTER_FULL_INFORMATION
{
94 ULONG NextEntryOffset
;
96 ULONG NumberOfInstances
;
97 USHORT FilterNameLength
;
98 WCHAR FilterNameBuffer
[1];
99 } FILTER_FULL_INFORMATION
, *PFILTER_FULL_INFORMATION
;
101 typedef struct _FILTER_AGGREGATE_BASIC_INFORMATION
{
102 ULONG NextEntryOffset
;
107 ULONG NumberOfInstances
;
108 USHORT FilterNameLength
;
109 USHORT FilterNameBufferOffset
;
110 USHORT FilterAltitudeLength
;
111 USHORT FilterAltitudeBufferOffset
;
114 USHORT FilterNameLength
;
115 USHORT FilterNameBufferOffset
;
118 } FILTER_AGGREGATE_BASIC_INFORMATION
, *PFILTER_AGGREGATE_BASIC_INFORMATION
;
122 #define FLTFL_AGGREGATE_INFO_IS_MINIFILTER 0x00000001
123 #define FLTFL_AGGREGATE_INFO_IS_LEGACYFILTER 0x00000002
124 #define FLTFL_ASI_IS_MINIFILTER 0x00000001
125 #define FLTFL_ASI_IS_LEGACYFILTER 0x00000002
126 #define FLTFL_VSI_DETACHED_VOLUME 0x00000001
127 #define FLTFL_IASI_IS_MINIFILTER 0x00000001
128 #define FLTFL_IASI_IS_LEGACYFILTER 0x00000002
129 #define FLTFL_IASIM_DETACHED_VOLUME 0x00000001
130 #define FLTFL_IASIL_DETACHED_VOLUME 0x00000001
132 typedef struct _FILTER_AGGREGATE_STANDARD_INFORMATION
{
133 ULONG NextEntryOffset
;
139 ULONG NumberOfInstances
;
140 USHORT FilterNameLength
;
141 USHORT FilterNameBufferOffset
;
142 USHORT FilterAltitudeLength
;
143 USHORT FilterAltitudeBufferOffset
;
147 USHORT FilterNameLength
;
148 USHORT FilterNameBufferOffset
;
149 USHORT FilterAltitudeLength
;
150 USHORT FilterAltitudeBufferOffset
;
153 } FILTER_AGGREGATE_STANDARD_INFORMATION
, *PFILTER_AGGREGATE_STANDARD_INFORMATION
;
155 typedef struct _FILTER_VOLUME_STANDARD_INFORMATION
{
156 ULONG NextEntryOffset
;
159 FLT_FILESYSTEM_TYPE FileSystemType
;
160 USHORT FilterVolumeNameLength
;
161 WCHAR FilterVolumeName
[1];
162 } FILTER_VOLUME_STANDARD_INFORMATION
, *PFILTER_VOLUME_STANDARD_INFORMATION
;
164 typedef struct _INSTANCE_AGGREGATE_STANDARD_INFORMATION
{
165 ULONG NextEntryOffset
;
171 FLT_FILESYSTEM_TYPE VolumeFileSystemType
;
172 USHORT InstanceNameLength
;
173 USHORT InstanceNameBufferOffset
;
174 USHORT AltitudeLength
;
175 USHORT AltitudeBufferOffset
;
176 USHORT VolumeNameLength
;
177 USHORT VolumeNameBufferOffset
;
178 USHORT FilterNameLength
;
179 USHORT FilterNameBufferOffset
;
183 USHORT AltitudeLength
;
184 USHORT AltitudeBufferOffset
;
185 USHORT VolumeNameLength
;
186 USHORT VolumeNameBufferOffset
;
187 USHORT FilterNameLength
;
188 USHORT FilterNameBufferOffset
;
191 } INSTANCE_AGGREGATE_STANDARD_INFORMATION
, *PINSTANCE_AGGREGATE_STANDARD_INFORMATION
;
193 #endif /* FLT_MGR_LONGHORN */
195 typedef struct _FILTER_VOLUME_BASIC_INFORMATION
{
196 USHORT FilterVolumeNameLength
;
197 WCHAR FilterVolumeName
[1];
198 } FILTER_VOLUME_BASIC_INFORMATION
, *PFILTER_VOLUME_BASIC_INFORMATION
;
201 _Struct_size_bytes_(sizeof(INSTANCE_BASIC_INFORMATION
) * InstanceNameLength
)
202 struct _INSTANCE_BASIC_INFORMATION
{
203 ULONG NextEntryOffset
;
204 USHORT InstanceNameLength
;
205 USHORT InstanceNameBufferOffset
;
206 } INSTANCE_BASIC_INFORMATION
, *PINSTANCE_BASIC_INFORMATION
;
209 _Struct_size_bytes_(sizeof(INSTANCE_PARTIAL_INFORMATION
) + InstanceNameLength
+ AltitudeLength
)
210 struct _INSTANCE_PARTIAL_INFORMATION
{
211 ULONG NextEntryOffset
;
212 USHORT InstanceNameLength
;
213 USHORT InstanceNameBufferOffset
;
214 USHORT AltitudeLength
;
215 USHORT AltitudeBufferOffset
;
216 } INSTANCE_PARTIAL_INFORMATION
, *PINSTANCE_PARTIAL_INFORMATION
;
219 _Struct_size_bytes_(sizeof(INSTANCE_FULL_INFORMATION
) + InstanceNameLength
+ AltitudeLength
+ VolumeNameLength
+ FilterNameLength
)
220 struct _INSTANCE_FULL_INFORMATION
{
221 ULONG NextEntryOffset
;
222 USHORT InstanceNameLength
;
223 USHORT InstanceNameBufferOffset
;
224 USHORT AltitudeLength
;
225 USHORT AltitudeBufferOffset
;
226 USHORT VolumeNameLength
;
227 USHORT VolumeNameBufferOffset
;
228 USHORT FilterNameLength
;
229 USHORT FilterNameBufferOffset
;
230 } INSTANCE_FULL_INFORMATION
, *PINSTANCE_FULL_INFORMATION
;
232 typedef struct _FILTER_MESSAGE_HEADER
{
235 } FILTER_MESSAGE_HEADER
, *PFILTER_MESSAGE_HEADER
;
237 typedef struct _FILTER_REPLY_HEADER
{
240 } FILTER_REPLY_HEADER
, *PFILTER_REPLY_HEADER
;
242 #endif /* FLT_MGR_BASELINE */
244 #endif /* __FLT_USER_STRUCTURES_H__ */