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
;
38 typedef _Return_type_success_(return >= 0) LONG NTSTATUS
, *PNTSTATUS
;
40 /* Known File System Types */
42 typedef enum _FLT_FILESYSTEM_TYPE
{
53 FLT_FSTYPE_MS_NETWARE
,
58 FLT_FSTYPE_ROXIO_UDF1
,
59 FLT_FSTYPE_ROXIO_UDF2
,
60 FLT_FSTYPE_ROXIO_UDF3
,
71 } FLT_FILESYSTEM_TYPE
, *PFLT_FILESYSTEM_TYPE
;
73 typedef enum _FILTER_INFORMATION_CLASS
{
74 FilterFullInformation
,
75 FilterAggregateBasicInformation
,
76 FilterAggregateStandardInformation
77 } FILTER_INFORMATION_CLASS
, *PFILTER_INFORMATION_CLASS
;
79 typedef enum _FILTER_VOLUME_INFORMATION_CLASS
{
80 FilterVolumeBasicInformation
,
81 FilterVolumeStandardInformation
82 } FILTER_VOLUME_INFORMATION_CLASS
, *PFILTER_VOLUME_INFORMATION_CLASS
;
84 typedef enum _INSTANCE_INFORMATION_CLASS
{
85 InstanceBasicInformation
,
86 InstancePartialInformation
,
87 InstanceFullInformation
,
88 InstanceAggregateStandardInformation
89 } INSTANCE_INFORMATION_CLASS
, *PINSTANCE_INFORMATION_CLASS
;
91 typedef struct _FILTER_FULL_INFORMATION
{
92 ULONG NextEntryOffset
;
94 ULONG NumberOfInstances
;
95 USHORT FilterNameLength
;
96 WCHAR FilterNameBuffer
[1];
97 } FILTER_FULL_INFORMATION
, *PFILTER_FULL_INFORMATION
;
99 typedef struct _FILTER_AGGREGATE_BASIC_INFORMATION
{
100 ULONG NextEntryOffset
;
105 ULONG NumberOfInstances
;
106 USHORT FilterNameLength
;
107 USHORT FilterNameBufferOffset
;
108 USHORT FilterAltitudeLength
;
109 USHORT FilterAltitudeBufferOffset
;
112 USHORT FilterNameLength
;
113 USHORT FilterNameBufferOffset
;
116 } FILTER_AGGREGATE_BASIC_INFORMATION
, *PFILTER_AGGREGATE_BASIC_INFORMATION
;
120 #define FLTFL_AGGREGATE_INFO_IS_MINIFILTER 0x00000001
121 #define FLTFL_AGGREGATE_INFO_IS_LEGACYFILTER 0x00000002
122 #define FLTFL_ASI_IS_MINIFILTER 0x00000001
123 #define FLTFL_ASI_IS_LEGACYFILTER 0x00000002
124 #define FLTFL_VSI_DETACHED_VOLUME 0x00000001
125 #define FLTFL_IASI_IS_MINIFILTER 0x00000001
126 #define FLTFL_IASI_IS_LEGACYFILTER 0x00000002
127 #define FLTFL_IASIM_DETACHED_VOLUME 0x00000001
128 #define FLTFL_IASIL_DETACHED_VOLUME 0x00000001
130 typedef struct _FILTER_AGGREGATE_STANDARD_INFORMATION
{
131 ULONG NextEntryOffset
;
137 ULONG NumberOfInstances
;
138 USHORT FilterNameLength
;
139 USHORT FilterNameBufferOffset
;
140 USHORT FilterAltitudeLength
;
141 USHORT FilterAltitudeBufferOffset
;
145 USHORT FilterNameLength
;
146 USHORT FilterNameBufferOffset
;
147 USHORT FilterAltitudeLength
;
148 USHORT FilterAltitudeBufferOffset
;
151 } FILTER_AGGREGATE_STANDARD_INFORMATION
, *PFILTER_AGGREGATE_STANDARD_INFORMATION
;
153 typedef struct _FILTER_VOLUME_STANDARD_INFORMATION
{
154 ULONG NextEntryOffset
;
157 FLT_FILESYSTEM_TYPE FileSystemType
;
158 USHORT FilterVolumeNameLength
;
159 WCHAR FilterVolumeName
[1];
160 } FILTER_VOLUME_STANDARD_INFORMATION
, *PFILTER_VOLUME_STANDARD_INFORMATION
;
162 typedef struct _INSTANCE_AGGREGATE_STANDARD_INFORMATION
{
163 ULONG NextEntryOffset
;
169 FLT_FILESYSTEM_TYPE VolumeFileSystemType
;
170 USHORT InstanceNameLength
;
171 USHORT InstanceNameBufferOffset
;
172 USHORT AltitudeLength
;
173 USHORT AltitudeBufferOffset
;
174 USHORT VolumeNameLength
;
175 USHORT VolumeNameBufferOffset
;
176 USHORT FilterNameLength
;
177 USHORT FilterNameBufferOffset
;
181 USHORT AltitudeLength
;
182 USHORT AltitudeBufferOffset
;
183 USHORT VolumeNameLength
;
184 USHORT VolumeNameBufferOffset
;
185 USHORT FilterNameLength
;
186 USHORT FilterNameBufferOffset
;
189 } INSTANCE_AGGREGATE_STANDARD_INFORMATION
, *PINSTANCE_AGGREGATE_STANDARD_INFORMATION
;
191 #endif /* FLT_MGR_LONGHORN */
193 typedef struct _FILTER_VOLUME_BASIC_INFORMATION
{
194 USHORT FilterVolumeNameLength
;
195 WCHAR FilterVolumeName
[1];
196 } FILTER_VOLUME_BASIC_INFORMATION
, *PFILTER_VOLUME_BASIC_INFORMATION
;
199 _Struct_size_bytes_(sizeof(INSTANCE_BASIC_INFORMATION
) * InstanceNameLength
)
200 struct _INSTANCE_BASIC_INFORMATION
{
201 ULONG NextEntryOffset
;
202 USHORT InstanceNameLength
;
203 USHORT InstanceNameBufferOffset
;
204 } INSTANCE_BASIC_INFORMATION
, *PINSTANCE_BASIC_INFORMATION
;
207 _Struct_size_bytes_(sizeof(INSTANCE_PARTIAL_INFORMATION
) + InstanceNameLength
+ AltitudeLength
)
208 struct _INSTANCE_PARTIAL_INFORMATION
{
209 ULONG NextEntryOffset
;
210 USHORT InstanceNameLength
;
211 USHORT InstanceNameBufferOffset
;
212 USHORT AltitudeLength
;
213 USHORT AltitudeBufferOffset
;
214 } INSTANCE_PARTIAL_INFORMATION
, *PINSTANCE_PARTIAL_INFORMATION
;
217 _Struct_size_bytes_(sizeof(INSTANCE_FULL_INFORMATION
) + InstanceNameLength
+ AltitudeLength
+ VolumeNameLength
+ FilterNameLength
)
218 struct _INSTANCE_FULL_INFORMATION
{
219 ULONG NextEntryOffset
;
220 USHORT InstanceNameLength
;
221 USHORT InstanceNameBufferOffset
;
222 USHORT AltitudeLength
;
223 USHORT AltitudeBufferOffset
;
224 USHORT VolumeNameLength
;
225 USHORT VolumeNameBufferOffset
;
226 USHORT FilterNameLength
;
227 USHORT FilterNameBufferOffset
;
228 } INSTANCE_FULL_INFORMATION
, *PINSTANCE_FULL_INFORMATION
;
230 typedef struct _FILTER_MESSAGE_HEADER
{
233 } FILTER_MESSAGE_HEADER
, *PFILTER_MESSAGE_HEADER
;
235 typedef struct _FILTER_REPLY_HEADER
{
238 } FILTER_REPLY_HEADER
, *PFILTER_REPLY_HEADER
;
240 #endif /* FLT_MGR_BASELINE */
242 #endif /* __FLT_USER_STRUCTURES_H__ */