1 #ifndef _EXT2_COMMON_INCLUDE_
2 #define _EXT2_COMMON_INCLUDE_
5 #define IOCTL_APP_VOLUME_PROPERTY \
6 CTL_CODE(FILE_DEVICE_UNKNOWN, 2000, METHOD_BUFFERED, FILE_ANY_ACCESS)
8 #define IOCTL_APP_QUERY_PERFSTAT \
9 CTL_CODE(FILE_DEVICE_UNKNOWN, 2001, METHOD_BUFFERED, FILE_ANY_ACCESS)
11 #define IOCTL_APP_MOUNT_POINT \
12 CTL_CODE(FILE_DEVICE_UNKNOWN, 2002, METHOD_BUFFERED, FILE_ANY_ACCESS)
15 /* performance / memory allocaiton statistics */
16 #define PS_IRP_CONTEXT 0x00
21 #define PS_EXTENT 0x05
22 #define PS_RW_CONTEXT 0x06
24 #define PS_FILE_NAME 0x08
25 #define PS_MCB_NAME 0x09
26 #define PS_INODE_NAME 0x0A
27 #define PS_DIR_ENTRY 0x0B
28 #define PS_DIR_PATTERN 0x0C
29 #define PS_DISK_EVENT 0x0D
30 #define PS_DISK_BUFFER 0x0E
31 #define PS_BLOCK_DATA 0x0F
33 #define PS_EXT2_INODE 0x10
34 #define PS_DENTRY 0x11
35 #define PS_BUFF_HEAD 0x12
37 #define PS_MAX_TYPE_V1 (0x10)
38 #define PS_MAX_TYPE_V2 (0x30)
42 ULONG Slot
[PS_MAX_TYPE_V1
];
51 ULONG RwContext
; /* rw context */
56 ULONG DirEntry
; /* pDir */
57 ULONG DirPattern
; /* Ccb-> in Ext2QeuryDir */
60 ULONG BlockData
; /* Ext2Expand&TruncateFile*/
67 ULONG Slot
[PS_MAX_TYPE_V2
];
76 ULONG RwContext
; /* rw context */
81 ULONG DirEntry
; /* pDir */
82 ULONG DirPattern
; /* Ccb-> in Ext2QeuryDir */
85 ULONG BlockData
; /* Ext2Expand&TruncateFile*/
86 ULONG Inodes
; /* inodes */
87 ULONG NameEntries
; /* name dentry */
88 ULONG BufferHead
; /* Buffer Header allocations */
93 typedef struct _EXT2_PERF_STATISTICS_V1
{
95 /* totoal number of processed/being processed requests */
99 } Irps
[IRP_MJ_MAXIMUM_FUNCTION
+ 1];
102 EXT2_STAT_ARRAY_V1 Unit
;
104 /* current memory allocation statistics */
105 EXT2_STAT_ARRAY_V1 Current
;
107 /* memory allocated in bytes */
108 EXT2_STAT_ARRAY_V1 Size
;
110 /* totoal memory allocation statistics */
111 EXT2_STAT_ARRAY_V1 Total
;
113 } EXT2_PERF_STATISTICS_V1
, *PEXT2_PERF_STATISTICS_V1
;
115 #define EXT2_PERF_STAT_MAGIC '2SPE'
116 #define EXT2_PERF_STAT_VER2 2
118 typedef struct _EXT2_PERF_STATISTICS_V2
{
120 ULONG Magic
; /* EPS2 */
121 USHORT Version
; /* 02 */
122 USHORT Length
; /* sizeof(EXT2_PERF_STATISTICS_V2) */
124 /* totoal number of processed/being processed requests */
128 } Irps
[IRP_MJ_MAXIMUM_FUNCTION
+ 1];
131 EXT2_STAT_ARRAY_V2 Unit
;
133 /* current memory allocation statistics */
134 EXT2_STAT_ARRAY_V2 Current
;
136 /* memory allocated in bytes */
137 EXT2_STAT_ARRAY_V2 Size
;
139 /* totoal memory allocation statistics */
140 EXT2_STAT_ARRAY_V2 Total
;
142 } EXT2_PERF_STATISTICS_V2
, *PEXT2_PERF_STATISTICS_V2
;
144 /* volume property ... */
146 #define EXT2_VOLUME_PROPERTY_MAGIC 'EVPM'
148 #define EXT2_FLAG_VP_SET_GLOBAL 0x00000001
150 #define APP_CMD_QUERY_VERSION 0x00000000 /* with global flag set */
151 #define APP_CMD_QUERY_CODEPAGES 0x00000001
152 #define APP_CMD_QUERY_PROPERTY 0x00000002
153 #define APP_CMD_SET_PROPERTY 0x00000003
154 #define APP_CMD_QUERY_PROPERTY2 0x00000004
155 #define APP_CMD_SET_PROPERTY2 0x00000005
156 #define APP_CMD_QUERY_PROPERTY3 0x00000006
157 #define APP_CMD_SET_PROPERTY3 0x00000007
159 #define CODEPAGE_MAXLEN 0x20
160 #define HIDINGPAT_LEN 0x20
162 typedef struct _EXT2_VOLUME_PROPERTY
{
167 BOOLEAN bExt3Writable
;
170 CHAR Codepage
[CODEPAGE_MAXLEN
];
171 } EXT2_VOLUME_PROPERTY
, *PEXT2_VOLUME_PROPERTY
;
174 typedef struct _EXT2_VOLUME_PROPERTY2
:EXT2_VOLUME_PROPERTY
{
176 typedef struct _EXT2_VOLUME_PROPERTY2
{
177 EXT2_VOLUME_PROPERTY
;
178 #endif // __cplusplus
180 /* new volume properties added after version 0.35 */
185 /* mount point: driver letter only */
188 /* checking bitmap */
189 BOOLEAN bCheckBitmap
;
191 /* global hiding patterns */
192 BOOLEAN bHidingPrefix
;
193 BOOLEAN bHidingSuffix
;
194 CHAR sHidingPrefix
[HIDINGPAT_LEN
];
195 CHAR sHidingSuffix
[HIDINGPAT_LEN
];
197 } EXT2_VOLUME_PROPERTY2
, *PEXT2_VOLUME_PROPERTY2
;
199 #define EXT2_VPROP3_AUTOMOUNT (1ULL << 0)
200 #define EXT2_VPROP3_USERIDS (1ULL << 1)
203 typedef struct _EXT2_VOLUME_PROPERTY3
:EXT2_VOLUME_PROPERTY2
{
205 typedef struct _EXT2_VOLUME_PROPERTY3
{
206 EXT2_VOLUME_PROPERTY2
;
207 #endif // __cplusplus
208 unsigned __int64 Flags2
;
217 } EXT2_VOLUME_PROPERTY3
, *PEXT2_VOLUME_PROPERTY3
;
219 /* Ext2Fsd driver version and built time */
220 typedef struct _EXT2_VOLUME_PROPERTY_VERSION
{
227 } EXT2_VOLUME_PROPERTY_VERSION
, *PEXT2_VOLUME_PROPERTY_VERSION
;
229 /* performance statistics */
230 #define EXT2_QUERY_PERFSTAT_MAGIC 'EVPM'
231 #define EXT2_QUERY_PERFSTAT_VER2 0x8000000
233 typedef struct _EXT2_QUERY_PERFSTAT
{
238 EXT2_PERF_STATISTICS_V1 PerfStatV1
;
239 EXT2_PERF_STATISTICS_V2 PerfStatV2
;
241 } EXT2_QUERY_PERFSTAT
, *PEXT2_QUERY_PERFSTAT
;
243 #define EXT2_QUERY_PERFSTAT_SZV1 (FIELD_OFFSET(EXT2_QUERY_PERFSTAT, PerfStatV1) + sizeof(EXT2_PERF_STATISTICS_V1))
244 #define EXT2_QUERY_PERFSTAT_SZV2 (FIELD_OFFSET(EXT2_QUERY_PERFSTAT, PerfStatV1) + sizeof(EXT2_PERF_STATISTICS_V2))
246 /* mountpoint management */
247 #define EXT2_APP_MOUNTPOINT_MAGIC 'EAMM'
248 typedef struct _EXT2_MOUNT_POINT
{
255 } EXT2_MOUNT_POINT
, *PEXT2_MOUNT_POINT
;
257 #define APP_CMD_ADD_DOS_SYMLINK 0x00000001
258 #define APP_CMD_DEL_DOS_SYMLINK 0x00000002
261 #endif /* _EXT2_COMMON_INCLUDE_ */