10 typedef struct _FSRTL_COMMON_FCB_HEADER
{
14 UCHAR IsFastIoPossible
;
19 PERESOURCE PagingIoResource
;
20 LARGE_INTEGER AllocationSize
;
21 LARGE_INTEGER FileSize
;
22 LARGE_INTEGER ValidDataLength
;
23 } FSRTL_COMMON_FCB_HEADER
, *PFSRTL_COMMON_FCB_HEADER
;
26 typedef struct _FSRTL_ADVANCED_FCB_HEADER
:FSRTL_COMMON_FCB_HEADER
{
27 #else /* __cplusplus */
28 typedef struct _FSRTL_ADVANCED_FCB_HEADER
{
29 FSRTL_COMMON_FCB_HEADER DUMMYSTRUCTNAME
;
30 #endif /* __cplusplus */
31 PFAST_MUTEX FastMutex
;
32 LIST_ENTRY FilterContexts
;
33 #if (NTDDI_VERSION >= NTDDI_VISTA)
34 EX_PUSH_LOCK PushLock
;
35 PVOID
*FileContextSupportPointer
;
37 } FSRTL_ADVANCED_FCB_HEADER
, *PFSRTL_ADVANCED_FCB_HEADER
;
39 #define FSRTL_FCB_HEADER_V0 (0x00)
40 #define FSRTL_FCB_HEADER_V1 (0x01)
42 #define FSRTL_FLAG_FILE_MODIFIED (0x01)
43 #define FSRTL_FLAG_FILE_LENGTH_CHANGED (0x02)
44 #define FSRTL_FLAG_LIMIT_MODIFIED_PAGES (0x04)
45 #define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX (0x08)
46 #define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH (0x10)
47 #define FSRTL_FLAG_USER_MAPPED_FILE (0x20)
48 #define FSRTL_FLAG_ADVANCED_HEADER (0x40)
49 #define FSRTL_FLAG_EOF_ADVANCE_ACTIVE (0x80)
51 #define FSRTL_FLAG2_DO_MODIFIED_WRITE (0x01)
52 #define FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS (0x02)
53 #define FSRTL_FLAG2_PURGE_WHEN_MAPPED (0x04)
54 #define FSRTL_FLAG2_IS_PAGING_FILE (0x08)
56 #define FSRTL_FSP_TOP_LEVEL_IRP (0x01)
57 #define FSRTL_CACHE_TOP_LEVEL_IRP (0x02)
58 #define FSRTL_MOD_WRITE_TOP_LEVEL_IRP (0x03)
59 #define FSRTL_FAST_IO_TOP_LEVEL_IRP (0x04)
60 #define FSRTL_NETWORK1_TOP_LEVEL_IRP ((LONG_PTR)0x05)
61 #define FSRTL_NETWORK2_TOP_LEVEL_IRP ((LONG_PTR)0x06)
62 #define FSRTL_MAX_TOP_LEVEL_IRP_FLAG ((LONG_PTR)0xFFFF)
64 typedef struct _FSRTL_AUXILIARY_BUFFER
{
69 } FSRTL_AUXILIARY_BUFFER
, *PFSRTL_AUXILIARY_BUFFER
;
71 #define FSRTL_AUXILIARY_FLAG_DEALLOCATE 0x00000001
73 typedef enum _FSRTL_COMPARISON_RESULT
{
77 } FSRTL_COMPARISON_RESULT
;
79 #define FSRTL_FAT_LEGAL 0x01
80 #define FSRTL_HPFS_LEGAL 0x02
81 #define FSRTL_NTFS_LEGAL 0x04
82 #define FSRTL_WILD_CHARACTER 0x08
83 #define FSRTL_OLE_LEGAL 0x10
84 #define FSRTL_NTFS_STREAM_LEGAL (FSRTL_NTFS_LEGAL | FSRTL_OLE_LEGAL)
86 #define FSRTL_VOLUME_DISMOUNT 1
87 #define FSRTL_VOLUME_DISMOUNT_FAILED 2
88 #define FSRTL_VOLUME_LOCK 3
89 #define FSRTL_VOLUME_LOCK_FAILED 4
90 #define FSRTL_VOLUME_UNLOCK 5
91 #define FSRTL_VOLUME_MOUNT 6
92 #define FSRTL_VOLUME_NEEDS_CHKDSK 7
93 #define FSRTL_VOLUME_WORM_NEAR_FULL 8
94 #define FSRTL_VOLUME_WEARING_OUT 9
95 #define FSRTL_VOLUME_FORCED_CLOSED 10
96 #define FSRTL_VOLUME_INFO_MAKE_COMPAT 11
97 #define FSRTL_VOLUME_PREPARING_EJECT 12
98 #define FSRTL_VOLUME_CHANGE_SIZE 13
99 #define FSRTL_VOLUME_BACKGROUND_FORMAT 14
102 (NTAPI
*PFSRTL_STACK_OVERFLOW_ROUTINE
) (
106 #if (NTDDI_VERSION >= NTDDI_VISTA)
108 #define FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED 0x00000001
109 #define FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED 0x00000002
110 #define FSRTL_UNC_PROVIDER_FLAGS_DOMAIN_SVC_AWARE 0x00000004
112 #define FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA 0x00000001
114 #define FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA 0x00000001
115 #define FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL 0x00000002
117 #define FSRTL_ECP_LOOKASIDE_FLAG_NONPAGED_POOL 0x00000002
119 #define FSRTL_VIRTDISK_FULLY_ALLOCATED 0x00000001
120 #define FSRTL_VIRTDISK_NO_DRIVE_LETTER 0x00000002
122 typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_1
{
124 } FSRTL_MUP_PROVIDER_INFO_LEVEL_1
, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_1
;
126 typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_2
{
128 UNICODE_STRING ProviderName
;
129 } FSRTL_MUP_PROVIDER_INFO_LEVEL_2
, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_2
;
132 (*PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK
) (
133 IN OUT PVOID EcpContext
,
136 typedef struct _ECP_LIST ECP_LIST
, *PECP_LIST
;
138 typedef ULONG FSRTL_ALLOCATE_ECPLIST_FLAGS
;
139 typedef ULONG FSRTL_ALLOCATE_ECP_FLAGS
;
140 typedef ULONG FSRTL_ECP_LOOKASIDE_FLAGS
;
142 typedef enum _FSRTL_CHANGE_BACKING_TYPE
{
143 ChangeDataControlArea
,
144 ChangeImageControlArea
,
146 } FSRTL_CHANGE_BACKING_TYPE
, *PFSRTL_CHANGE_BACKING_TYPE
;
148 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
150 typedef struct _FSRTL_PER_FILE_CONTEXT
{
154 PFREE_FUNCTION FreeCallback
;
155 } FSRTL_PER_FILE_CONTEXT
, *PFSRTL_PER_FILE_CONTEXT
;
157 typedef struct _FSRTL_PER_STREAM_CONTEXT
{
161 PFREE_FUNCTION FreeCallback
;
162 } FSRTL_PER_STREAM_CONTEXT
, *PFSRTL_PER_STREAM_CONTEXT
;
164 #if (NTDDI_VERSION >= NTDDI_WIN2K)
166 (*PFN_FSRTLTEARDOWNPERSTREAMCONTEXTS
) (
167 IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader
);
170 typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT
{
174 } FSRTL_PER_FILEOBJECT_CONTEXT
, *PFSRTL_PER_FILEOBJECT_CONTEXT
;
176 #define FSRTL_CC_FLUSH_ERROR_FLAG_NO_HARD_ERROR 0x1
177 #define FSRTL_CC_FLUSH_ERROR_FLAG_NO_LOG_ENTRY 0x2
180 (NTAPI
*PCOMPLETE_LOCK_IRP_ROUTINE
) (
184 typedef struct _FILE_LOCK_INFO
{
185 LARGE_INTEGER StartingByte
;
186 LARGE_INTEGER Length
;
187 BOOLEAN ExclusiveLock
;
189 PFILE_OBJECT FileObject
;
191 LARGE_INTEGER EndingByte
;
192 } FILE_LOCK_INFO
, *PFILE_LOCK_INFO
;
195 (NTAPI
*PUNLOCK_ROUTINE
) (
197 IN PFILE_LOCK_INFO FileLockInfo
);
199 typedef struct _FILE_LOCK
{
200 PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine
;
201 PUNLOCK_ROUTINE UnlockRoutine
;
202 BOOLEAN FastIoIsQuestionable
;
204 PVOID LockInformation
;
205 FILE_LOCK_INFO LastReturnedLockInfo
;
206 PVOID LastReturnedLock
;
207 LONG
volatile LockRequestsInProgress
;
208 } FILE_LOCK
, *PFILE_LOCK
;
210 typedef struct _TUNNEL
{
212 PRTL_SPLAY_LINKS Cache
;
213 LIST_ENTRY TimerQueue
;
217 typedef struct _BASE_MCB
{
218 ULONG MaximumPairCount
;
223 } BASE_MCB
, *PBASE_MCB
;
225 typedef struct _LARGE_MCB
{
226 PKGUARDED_MUTEX GuardedMutex
;
228 } LARGE_MCB
, *PLARGE_MCB
;
230 #define MCB_FLAG_RAISE_ON_ALLOCATION_FAILURE 1
232 typedef struct _MCB
{
233 LARGE_MCB DummyFieldThatSizesThisStructureCorrectly
;
236 typedef enum _FAST_IO_POSSIBLE
{
237 FastIoIsNotPossible
= 0,
242 typedef struct _EOF_WAIT_BLOCK
{
243 LIST_ENTRY EofWaitLinks
;
245 } EOF_WAIT_BLOCK
, *PEOF_WAIT_BLOCK
;
247 typedef PVOID OPLOCK
, *POPLOCK
;
250 (NTAPI
*POPLOCK_WAIT_COMPLETE_ROUTINE
) (
255 (NTAPI
*POPLOCK_FS_PREPOST_IRP
) (
259 #if (NTDDI_VERSION >= NTDDI_VISTASP1)
260 #define OPLOCK_FLAG_COMPLETE_IF_OPLOCKED 0x00000001
263 #if (NTDDI_VERSION >= NTDDI_WIN7)
264 #define OPLOCK_FLAG_OPLOCK_KEY_CHECK_ONLY 0x00000002
265 #define OPLOCK_FLAG_BACK_OUT_ATOMIC_OPLOCK 0x00000004
266 #define OPLOCK_FLAG_IGNORE_OPLOCK_KEYS 0x00000008
267 #define OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH 0x00000001
270 #if (NTDDI_VERSION >= NTDDI_WIN7)
272 typedef struct _OPLOCK_KEY_ECP_CONTEXT
{
275 } OPLOCK_KEY_ECP_CONTEXT
, *POPLOCK_KEY_ECP_CONTEXT
;
277 DEFINE_GUID( GUID_ECP_OPLOCK_KEY
, 0x48850596, 0x3050, 0x4be7, 0x98, 0x63, 0xfe, 0xc3, 0x50, 0xce, 0x8d, 0x7f );
281 typedef PVOID PNOTIFY_SYNC
;
284 (NTAPI
*PCHECK_FOR_TRAVERSE_ACCESS
) (
285 IN PVOID NotifyContext
,
286 IN PVOID TargetContext OPTIONAL
,
287 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
);
290 (NTAPI
*PFILTER_REPORT_CHANGE
) (
291 IN PVOID NotifyContext
,
292 IN PVOID FilterContext
);