ReactOS  0.4.14-dev-358-gbef841c
fltuserstructures.h
Go to the documentation of this file.
1 /*
2  * fltuserstructures.h
3  *
4  * This file is part of the ReactOS DDK package.
5  *
6  * Contributors:
7  * Amine Khaldi (amine.khaldi@reactos.org)
8  *
9  * THIS SOFTWARE IS NOT COPYRIGHTED
10  *
11  * This source code is offered for use in the public domain. You may
12  * use, modify or distribute it freely.
13  *
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.
18  *
19  */
20 #pragma once
21 
22 #ifndef __FLT_USER_STRUCTURES_H__
23 #define __FLT_USER_STRUCTURES_H__
24 
25 #if FLT_MGR_BASELINE
26 
27 #define FLTAPI NTAPI
28 
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))
35 
36 typedef HANDLE HFILTER, HFILTER_INSTANCE, HFILTER_VOLUME;
37 
38 #ifndef _NTDEF_H
39 typedef _Return_type_success_(return >= 0) LONG NTSTATUS, *PNTSTATUS;
40 #endif
41 
42 /* Known File System Types */
43 
44 typedef enum _FLT_FILESYSTEM_TYPE {
45  FLT_FSTYPE_UNKNOWN,
46  FLT_FSTYPE_RAW,
47  FLT_FSTYPE_NTFS,
48  FLT_FSTYPE_FAT,
49  FLT_FSTYPE_CDFS,
50  FLT_FSTYPE_UDFS,
51  FLT_FSTYPE_LANMAN,
52  FLT_FSTYPE_WEBDAV,
53  FLT_FSTYPE_RDPDR,
54  FLT_FSTYPE_NFS,
55  FLT_FSTYPE_MS_NETWARE,
56  FLT_FSTYPE_NETWARE,
57  FLT_FSTYPE_BSUDF,
58  FLT_FSTYPE_MUP,
59  FLT_FSTYPE_RSFX,
60  FLT_FSTYPE_ROXIO_UDF1,
61  FLT_FSTYPE_ROXIO_UDF2,
62  FLT_FSTYPE_ROXIO_UDF3,
63  FLT_FSTYPE_TACIT,
64  FLT_FSTYPE_FS_REC,
65  FLT_FSTYPE_INCD,
66  FLT_FSTYPE_INCD_FAT,
67  FLT_FSTYPE_EXFAT,
68  FLT_FSTYPE_PSFS,
69  FLT_FSTYPE_GPFS,
70  FLT_FSTYPE_NPFS,
71  FLT_FSTYPE_MSFS,
72  FLT_FSTYPE_CSVFS
73 } FLT_FILESYSTEM_TYPE, *PFLT_FILESYSTEM_TYPE;
74 
75 typedef enum _FILTER_INFORMATION_CLASS {
76  FilterFullInformation,
77  FilterAggregateBasicInformation,
78  FilterAggregateStandardInformation
79 } FILTER_INFORMATION_CLASS, *PFILTER_INFORMATION_CLASS;
80 
81 typedef enum _FILTER_VOLUME_INFORMATION_CLASS {
82  FilterVolumeBasicInformation,
83  FilterVolumeStandardInformation
84 } FILTER_VOLUME_INFORMATION_CLASS, *PFILTER_VOLUME_INFORMATION_CLASS;
85 
86 typedef enum _INSTANCE_INFORMATION_CLASS {
87  InstanceBasicInformation,
88  InstancePartialInformation,
89  InstanceFullInformation,
90  InstanceAggregateStandardInformation
91 } INSTANCE_INFORMATION_CLASS, *PINSTANCE_INFORMATION_CLASS;
92 
93 typedef struct _FILTER_FULL_INFORMATION {
94  ULONG NextEntryOffset;
95  ULONG FrameID;
96  ULONG NumberOfInstances;
97  USHORT FilterNameLength;
98  WCHAR FilterNameBuffer[1];
99 } FILTER_FULL_INFORMATION, *PFILTER_FULL_INFORMATION;
100 
101 typedef struct _FILTER_AGGREGATE_BASIC_INFORMATION {
102  ULONG NextEntryOffset;
103  ULONG Flags;
104  union {
105  struct {
106  ULONG FrameID;
107  ULONG NumberOfInstances;
108  USHORT FilterNameLength;
109  USHORT FilterNameBufferOffset;
110  USHORT FilterAltitudeLength;
111  USHORT FilterAltitudeBufferOffset;
112  } MiniFilter;
113  struct {
114  USHORT FilterNameLength;
115  USHORT FilterNameBufferOffset;
116  } LegacyFilter;
117  } Type;
118 } FILTER_AGGREGATE_BASIC_INFORMATION, *PFILTER_AGGREGATE_BASIC_INFORMATION;
119 
120 #if FLT_MGR_LONGHORN
121 
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
131 
132 typedef struct _FILTER_AGGREGATE_STANDARD_INFORMATION {
133  ULONG NextEntryOffset;
134  ULONG Flags;
135  union {
136  struct {
137  ULONG Flags;
138  ULONG FrameID;
139  ULONG NumberOfInstances;
140  USHORT FilterNameLength;
141  USHORT FilterNameBufferOffset;
142  USHORT FilterAltitudeLength;
143  USHORT FilterAltitudeBufferOffset;
144  } MiniFilter;
145  struct {
146  ULONG Flags;
147  USHORT FilterNameLength;
148  USHORT FilterNameBufferOffset;
149  USHORT FilterAltitudeLength;
150  USHORT FilterAltitudeBufferOffset;
151  } LegacyFilter;
152  } Type;
153 } FILTER_AGGREGATE_STANDARD_INFORMATION, *PFILTER_AGGREGATE_STANDARD_INFORMATION;
154 
155 typedef struct _FILTER_VOLUME_STANDARD_INFORMATION {
156  ULONG NextEntryOffset;
157  ULONG Flags;
158  ULONG FrameID;
159  FLT_FILESYSTEM_TYPE FileSystemType;
160  USHORT FilterVolumeNameLength;
161  WCHAR FilterVolumeName[1];
162 } FILTER_VOLUME_STANDARD_INFORMATION, *PFILTER_VOLUME_STANDARD_INFORMATION;
163 
164 typedef struct _INSTANCE_AGGREGATE_STANDARD_INFORMATION {
165  ULONG NextEntryOffset;
166  ULONG Flags;
167  union {
168  struct {
169  ULONG Flags;
170  ULONG FrameID;
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;
180  } MiniFilter;
181  struct {
182  ULONG Flags;
183  USHORT AltitudeLength;
184  USHORT AltitudeBufferOffset;
185  USHORT VolumeNameLength;
186  USHORT VolumeNameBufferOffset;
187  USHORT FilterNameLength;
188  USHORT FilterNameBufferOffset;
189  } LegacyFilter;
190  } Type;
191 } INSTANCE_AGGREGATE_STANDARD_INFORMATION, *PINSTANCE_AGGREGATE_STANDARD_INFORMATION;
192 
193 #endif /* FLT_MGR_LONGHORN */
194 
195 typedef struct _FILTER_VOLUME_BASIC_INFORMATION {
196  USHORT FilterVolumeNameLength;
197  WCHAR FilterVolumeName[1];
198 } FILTER_VOLUME_BASIC_INFORMATION, *PFILTER_VOLUME_BASIC_INFORMATION;
199 
200 typedef
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;
207 
208 typedef
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;
217 
218 typedef
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;
231 
232 typedef struct _FILTER_MESSAGE_HEADER {
234  ULONGLONG MessageId;
235 } FILTER_MESSAGE_HEADER, *PFILTER_MESSAGE_HEADER;
236 
237 typedef struct _FILTER_REPLY_HEADER {
239  ULONGLONG MessageId;
240 } FILTER_REPLY_HEADER, *PFILTER_REPLY_HEADER;
241 
242 #endif /* FLT_MGR_BASELINE */
243 
244 #endif /* __FLT_USER_STRUCTURES_H__ */
* PNTSTATUS
Definition: strlen.c:14
Type
Definition: Type.h:6
LONG NTSTATUS
Definition: precomp.h:26
#define _Return_type_success_(expr)
Definition: no_sal2.h:630
_Must_inspect_result_ _In_ PFLT_PORT _In_ ULONG _Out_writes_bytes_opt_ ReplyLength PVOID _Inout_opt_ PULONG ReplyLength
Definition: fltkernel.h:1903
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
long LONG
Definition: pedump.c:60
__wchar_t WCHAR
Definition: xmlstorage.h:180
uint64_t ULONGLONG
Definition: typedefs.h:65
Status
Definition: gdiplustypes.h:24
unsigned short USHORT
Definition: pedump.c:61
#define _Struct_size_bytes_(size)
Definition: no_sal2.h:634
unsigned int ULONG
Definition: retypes.h:1
_Out_ PFLT_FILESYSTEM_TYPE FileSystemType
Definition: fltkernel.h:2408