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))
36typedef HANDLE HFILTER, HFILTER_INSTANCE, HFILTER_VOLUME;
44typedef 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;
75typedef enum _FILTER_INFORMATION_CLASS {
76 FilterFullInformation,
77 FilterAggregateBasicInformation,
78 FilterAggregateStandardInformation
79} FILTER_INFORMATION_CLASS, *PFILTER_INFORMATION_CLASS;
81typedef enum _FILTER_VOLUME_INFORMATION_CLASS {
82 FilterVolumeBasicInformation,
83 FilterVolumeStandardInformation
84} FILTER_VOLUME_INFORMATION_CLASS, *PFILTER_VOLUME_INFORMATION_CLASS;
86typedef enum _INSTANCE_INFORMATION_CLASS {
87 InstanceBasicInformation,
88 InstancePartialInformation,
89 InstanceFullInformation,
90 InstanceAggregateStandardInformation
91} INSTANCE_INFORMATION_CLASS, *PINSTANCE_INFORMATION_CLASS;
93typedef struct _FILTER_FULL_INFORMATION {
94 ULONG NextEntryOffset;
96 ULONG NumberOfInstances;
98 WCHAR FilterNameBuffer[1];
99} FILTER_FULL_INFORMATION, *PFILTER_FULL_INFORMATION;
101typedef struct _FILTER_AGGREGATE_BASIC_INFORMATION {
102 ULONG NextEntryOffset;
107 ULONG NumberOfInstances;
109 USHORT FilterNameBufferOffset;
110 USHORT FilterAltitudeLength;
111 USHORT FilterAltitudeBufferOffset;
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
132typedef struct _FILTER_AGGREGATE_STANDARD_INFORMATION {
133 ULONG NextEntryOffset;
139 ULONG NumberOfInstances;
141 USHORT FilterNameBufferOffset;
142 USHORT FilterAltitudeLength;
143 USHORT FilterAltitudeBufferOffset;
148 USHORT FilterNameBufferOffset;
149 USHORT FilterAltitudeLength;
150 USHORT FilterAltitudeBufferOffset;
153} FILTER_AGGREGATE_STANDARD_INFORMATION, *PFILTER_AGGREGATE_STANDARD_INFORMATION;
155typedef struct _FILTER_VOLUME_STANDARD_INFORMATION {
156 ULONG NextEntryOffset;
160 USHORT FilterVolumeNameLength;
161 WCHAR FilterVolumeName[1];
162} FILTER_VOLUME_STANDARD_INFORMATION, *PFILTER_VOLUME_STANDARD_INFORMATION;
164typedef struct _INSTANCE_AGGREGATE_STANDARD_INFORMATION {
165 ULONG NextEntryOffset;
171 FLT_FILESYSTEM_TYPE VolumeFileSystemType;
172 USHORT InstanceNameLength;
173 USHORT InstanceNameBufferOffset;
175 USHORT AltitudeBufferOffset;
177 USHORT VolumeNameBufferOffset;
179 USHORT FilterNameBufferOffset;
184 USHORT AltitudeBufferOffset;
186 USHORT VolumeNameBufferOffset;
188 USHORT FilterNameBufferOffset;
191} INSTANCE_AGGREGATE_STANDARD_INFORMATION, *PINSTANCE_AGGREGATE_STANDARD_INFORMATION;
195typedef struct _FILTER_VOLUME_BASIC_INFORMATION {
196 USHORT FilterVolumeNameLength;
197 WCHAR FilterVolumeName[1];
198} FILTER_VOLUME_BASIC_INFORMATION, *PFILTER_VOLUME_BASIC_INFORMATION;
202struct _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)
210struct _INSTANCE_PARTIAL_INFORMATION {
211 ULONG NextEntryOffset;
212 USHORT InstanceNameLength;
213 USHORT InstanceNameBufferOffset;
215 USHORT AltitudeBufferOffset;
216} INSTANCE_PARTIAL_INFORMATION, *PINSTANCE_PARTIAL_INFORMATION;
219_Struct_size_bytes_(
sizeof(INSTANCE_FULL_INFORMATION) + InstanceNameLength + AltitudeLength + VolumeNameLength + FilterNameLength)
220struct _INSTANCE_FULL_INFORMATION {
221 ULONG NextEntryOffset;
222 USHORT InstanceNameLength;
223 USHORT InstanceNameBufferOffset;
225 USHORT AltitudeBufferOffset;
227 USHORT VolumeNameBufferOffset;
229 USHORT FilterNameBufferOffset;
230} INSTANCE_FULL_INFORMATION, *PINSTANCE_FULL_INFORMATION;
232typedef struct _FILTER_MESSAGE_HEADER {
235} FILTER_MESSAGE_HEADER, *PFILTER_MESSAGE_HEADER;
237typedef struct _FILTER_REPLY_HEADER {
240} FILTER_REPLY_HEADER, *PFILTER_REPLY_HEADER;
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG _Out_writes_bytes_opt_ ReplyLength PVOID _Inout_opt_ PULONG ReplyLength
_Out_ PFLT_FILESYSTEM_TYPE FileSystemType
#define _Struct_size_bytes_(size)
#define _Return_type_success_(expr)
_Must_inspect_result_ _In_ ULONG Flags