[PSDK]
[reactos.git] / include / xdk / fsrtltypes.h
1 $if (_NTIFS_)
2 /* FSRTL Types */
3
4 typedef struct _FSRTL_COMMON_FCB_HEADER {
5 CSHORT NodeTypeCode;
6 CSHORT NodeByteSize;
7 UCHAR Flags;
8 UCHAR IsFastIoPossible;
9 UCHAR Flags2;
10 UCHAR Reserved:4;
11 UCHAR Version:4;
12 PERESOURCE Resource;
13 PERESOURCE PagingIoResource;
14 LARGE_INTEGER AllocationSize;
15 LARGE_INTEGER FileSize;
16 LARGE_INTEGER ValidDataLength;
17 } FSRTL_COMMON_FCB_HEADER, *PFSRTL_COMMON_FCB_HEADER;
18
19 #ifdef __cplusplus
20 typedef struct _FSRTL_ADVANCED_FCB_HEADER:FSRTL_COMMON_FCB_HEADER {
21 #else /* __cplusplus */
22 typedef struct _FSRTL_ADVANCED_FCB_HEADER {
23 FSRTL_COMMON_FCB_HEADER DUMMYSTRUCTNAME;
24 #endif /* __cplusplus */
25 PFAST_MUTEX FastMutex;
26 LIST_ENTRY FilterContexts;
27 #if (NTDDI_VERSION >= NTDDI_VISTA)
28 EX_PUSH_LOCK PushLock;
29 PVOID *FileContextSupportPointer;
30 #endif
31 } FSRTL_ADVANCED_FCB_HEADER, *PFSRTL_ADVANCED_FCB_HEADER;
32
33 #define FSRTL_FCB_HEADER_V0 (0x00)
34 #define FSRTL_FCB_HEADER_V1 (0x01)
35
36 #define FSRTL_FLAG_FILE_MODIFIED (0x01)
37 #define FSRTL_FLAG_FILE_LENGTH_CHANGED (0x02)
38 #define FSRTL_FLAG_LIMIT_MODIFIED_PAGES (0x04)
39 #define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX (0x08)
40 #define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH (0x10)
41 #define FSRTL_FLAG_USER_MAPPED_FILE (0x20)
42 #define FSRTL_FLAG_ADVANCED_HEADER (0x40)
43 #define FSRTL_FLAG_EOF_ADVANCE_ACTIVE (0x80)
44
45 #define FSRTL_FLAG2_DO_MODIFIED_WRITE (0x01)
46 #define FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS (0x02)
47 #define FSRTL_FLAG2_PURGE_WHEN_MAPPED (0x04)
48 #define FSRTL_FLAG2_IS_PAGING_FILE (0x08)
49
50 #define FSRTL_FSP_TOP_LEVEL_IRP (0x01)
51 #define FSRTL_CACHE_TOP_LEVEL_IRP (0x02)
52 #define FSRTL_MOD_WRITE_TOP_LEVEL_IRP (0x03)
53 #define FSRTL_FAST_IO_TOP_LEVEL_IRP (0x04)
54 #define FSRTL_NETWORK1_TOP_LEVEL_IRP ((LONG_PTR)0x05)
55 #define FSRTL_NETWORK2_TOP_LEVEL_IRP ((LONG_PTR)0x06)
56 #define FSRTL_MAX_TOP_LEVEL_IRP_FLAG ((LONG_PTR)0xFFFF)
57
58 typedef struct _FSRTL_AUXILIARY_BUFFER {
59 PVOID Buffer;
60 ULONG Length;
61 ULONG Flags;
62 PMDL Mdl;
63 } FSRTL_AUXILIARY_BUFFER, *PFSRTL_AUXILIARY_BUFFER;
64
65 #define FSRTL_AUXILIARY_FLAG_DEALLOCATE 0x00000001
66
67 typedef enum _FSRTL_COMPARISON_RESULT {
68 LessThan = -1,
69 EqualTo = 0,
70 GreaterThan = 1
71 } FSRTL_COMPARISON_RESULT;
72
73 #define FSRTL_FAT_LEGAL 0x01
74 #define FSRTL_HPFS_LEGAL 0x02
75 #define FSRTL_NTFS_LEGAL 0x04
76 #define FSRTL_WILD_CHARACTER 0x08
77 #define FSRTL_OLE_LEGAL 0x10
78 #define FSRTL_NTFS_STREAM_LEGAL (FSRTL_NTFS_LEGAL | FSRTL_OLE_LEGAL)
79
80 #define FSRTL_VOLUME_DISMOUNT 1
81 #define FSRTL_VOLUME_DISMOUNT_FAILED 2
82 #define FSRTL_VOLUME_LOCK 3
83 #define FSRTL_VOLUME_LOCK_FAILED 4
84 #define FSRTL_VOLUME_UNLOCK 5
85 #define FSRTL_VOLUME_MOUNT 6
86 #define FSRTL_VOLUME_NEEDS_CHKDSK 7
87 #define FSRTL_VOLUME_WORM_NEAR_FULL 8
88 #define FSRTL_VOLUME_WEARING_OUT 9
89 #define FSRTL_VOLUME_FORCED_CLOSED 10
90 #define FSRTL_VOLUME_INFO_MAKE_COMPAT 11
91 #define FSRTL_VOLUME_PREPARING_EJECT 12
92 #define FSRTL_VOLUME_CHANGE_SIZE 13
93 #define FSRTL_VOLUME_BACKGROUND_FORMAT 14
94
95 typedef VOID
96 (NTAPI *PFSRTL_STACK_OVERFLOW_ROUTINE) (
97 IN PVOID Context,
98 IN PKEVENT Event);
99
100 #if (NTDDI_VERSION >= NTDDI_VISTA)
101
102 #define FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED 0x00000001
103 #define FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED 0x00000002
104 #define FSRTL_UNC_PROVIDER_FLAGS_DOMAIN_SVC_AWARE 0x00000004
105
106 #define FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA 0x00000001
107
108 #define FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA 0x00000001
109 #define FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL 0x00000002
110
111 #define FSRTL_ECP_LOOKASIDE_FLAG_NONPAGED_POOL 0x00000002
112
113 #define FSRTL_VIRTDISK_FULLY_ALLOCATED 0x00000001
114 #define FSRTL_VIRTDISK_NO_DRIVE_LETTER 0x00000002
115
116 typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_1 {
117 ULONG32 ProviderId;
118 } FSRTL_MUP_PROVIDER_INFO_LEVEL_1, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_1;
119
120 typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_2 {
121 ULONG32 ProviderId;
122 UNICODE_STRING ProviderName;
123 } FSRTL_MUP_PROVIDER_INFO_LEVEL_2, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_2;
124
125 typedef VOID
126 (*PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK) (
127 IN OUT PVOID EcpContext,
128 IN LPCGUID EcpType);
129
130 typedef struct _ECP_LIST ECP_LIST, *PECP_LIST;
131
132 typedef ULONG FSRTL_ALLOCATE_ECPLIST_FLAGS;
133 typedef ULONG FSRTL_ALLOCATE_ECP_FLAGS;
134 typedef ULONG FSRTL_ECP_LOOKASIDE_FLAGS;
135
136 typedef enum _FSRTL_CHANGE_BACKING_TYPE {
137 ChangeDataControlArea,
138 ChangeImageControlArea,
139 ChangeSharedCacheMap
140 } FSRTL_CHANGE_BACKING_TYPE, *PFSRTL_CHANGE_BACKING_TYPE;
141
142 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
143
144 typedef struct _FSRTL_PER_FILE_CONTEXT {
145 LIST_ENTRY Links;
146 PVOID OwnerId;
147 PVOID InstanceId;
148 PFREE_FUNCTION FreeCallback;
149 } FSRTL_PER_FILE_CONTEXT, *PFSRTL_PER_FILE_CONTEXT;
150
151 typedef struct _FSRTL_PER_STREAM_CONTEXT {
152 LIST_ENTRY Links;
153 PVOID OwnerId;
154 PVOID InstanceId;
155 PFREE_FUNCTION FreeCallback;
156 } FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;
157
158 #if (NTDDI_VERSION >= NTDDI_WIN2K)
159 typedef VOID
160 (*PFN_FSRTLTEARDOWNPERSTREAMCONTEXTS) (
161 IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader);
162 #endif
163
164 typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT {
165 LIST_ENTRY Links;
166 PVOID OwnerId;
167 PVOID InstanceId;
168 } FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT;
169
170 #define FSRTL_CC_FLUSH_ERROR_FLAG_NO_HARD_ERROR 0x1
171 #define FSRTL_CC_FLUSH_ERROR_FLAG_NO_LOG_ENTRY 0x2
172 $endif (_NTIFS_)