4 typedef struct _FSRTL_COMMON_FCB_HEADER
{
8 UCHAR IsFastIoPossible
;
13 PERESOURCE PagingIoResource
;
14 LARGE_INTEGER AllocationSize
;
15 LARGE_INTEGER FileSize
;
16 LARGE_INTEGER ValidDataLength
;
17 } FSRTL_COMMON_FCB_HEADER
, *PFSRTL_COMMON_FCB_HEADER
;
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
;
31 } FSRTL_ADVANCED_FCB_HEADER
, *PFSRTL_ADVANCED_FCB_HEADER
;
33 #define FSRTL_FCB_HEADER_V0 (0x00)
34 #define FSRTL_FCB_HEADER_V1 (0x01)
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)
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)
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)
58 typedef struct _FSRTL_AUXILIARY_BUFFER
{
63 } FSRTL_AUXILIARY_BUFFER
, *PFSRTL_AUXILIARY_BUFFER
;
65 #define FSRTL_AUXILIARY_FLAG_DEALLOCATE 0x00000001
67 typedef enum _FSRTL_COMPARISON_RESULT
{
71 } FSRTL_COMPARISON_RESULT
;
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)
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
96 (NTAPI
*PFSRTL_STACK_OVERFLOW_ROUTINE
) (
100 #if (NTDDI_VERSION >= NTDDI_VISTA)
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
106 #define FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA 0x00000001
108 #define FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA 0x00000001
109 #define FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL 0x00000002
111 #define FSRTL_ECP_LOOKASIDE_FLAG_NONPAGED_POOL 0x00000002
113 #define FSRTL_VIRTDISK_FULLY_ALLOCATED 0x00000001
114 #define FSRTL_VIRTDISK_NO_DRIVE_LETTER 0x00000002
116 typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_1
{
118 } FSRTL_MUP_PROVIDER_INFO_LEVEL_1
, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_1
;
120 typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_2
{
122 UNICODE_STRING ProviderName
;
123 } FSRTL_MUP_PROVIDER_INFO_LEVEL_2
, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_2
;
126 (*PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK
) (
127 IN OUT PVOID EcpContext
,
130 typedef struct _ECP_LIST ECP_LIST
, *PECP_LIST
;
132 typedef ULONG FSRTL_ALLOCATE_ECPLIST_FLAGS
;
133 typedef ULONG FSRTL_ALLOCATE_ECP_FLAGS
;
134 typedef ULONG FSRTL_ECP_LOOKASIDE_FLAGS
;
136 typedef enum _FSRTL_CHANGE_BACKING_TYPE
{
137 ChangeDataControlArea
,
138 ChangeImageControlArea
,
140 } FSRTL_CHANGE_BACKING_TYPE
, *PFSRTL_CHANGE_BACKING_TYPE
;
142 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
144 typedef struct _FSRTL_PER_FILE_CONTEXT
{
148 PFREE_FUNCTION FreeCallback
;
149 } FSRTL_PER_FILE_CONTEXT
, *PFSRTL_PER_FILE_CONTEXT
;
151 typedef struct _FSRTL_PER_STREAM_CONTEXT
{
155 PFREE_FUNCTION FreeCallback
;
156 } FSRTL_PER_STREAM_CONTEXT
, *PFSRTL_PER_STREAM_CONTEXT
;
158 #if (NTDDI_VERSION >= NTDDI_WIN2K)
160 (*PFN_FSRTLTEARDOWNPERSTREAMCONTEXTS
) (
161 IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader
);
164 typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT
{
168 } FSRTL_PER_FILEOBJECT_CONTEXT
, *PFSRTL_PER_FILEOBJECT_CONTEXT
;
170 #define FSRTL_CC_FLUSH_ERROR_FLAG_NO_HARD_ERROR 0x1
171 #define FSRTL_CC_FLUSH_ERROR_FLAG_NO_LOG_ENTRY 0x2