0a2db9e6bcaf09bda3b24206a1452abbdc64f3bb
[reactos.git] / include / ddk / ntifs.h
1 #ifndef __INCLUDE_DDK_NTIFS_H
2 #define __INCLUDE_DDK_NTIFS_H
3
4 NTSTATUS STDCALL
5 CcRosInitializeFileCache (PFILE_OBJECT  FileObject,
6                           ULONG         CacheSegmentSize);
7 NTSTATUS STDCALL
8 CcRosReleaseFileCache (PFILE_OBJECT     FileObject);
9
10 #include <ddk/cctypes.h>
11
12 #include <ddk/ccfuncs.h>
13
14 #include <ddk/fstypes.h>
15 #include <ddk/fsfuncs.h>
16
17 typedef struct _FSRTL_COMMON_FCB_HEADER
18 {
19     CSHORT NodeTypeCode;
20     CSHORT NodeByteSize;
21     UCHAR Flags;
22     UCHAR IsFastIoPossible; // really type FAST_IO_POSSIBLE
23     UCHAR Flags2;
24     UCHAR Reserved;     /* always 0 */
25     PERESOURCE Resource;
26     PERESOURCE PagingIoResource;
27     LARGE_INTEGER AllocationSize;
28     LARGE_INTEGER FileSize;
29     LARGE_INTEGER ValidDataLength;
30 } FSRTL_COMMON_FCB_HEADER;
31 typedef FSRTL_COMMON_FCB_HEADER *PFSRTL_COMMON_FCB_HEADER;
32
33 //  This Fcb header is used for files which support caching
34 //  of compressed data, and related new support.
35
36 typedef struct _FSRTL_ADVANCED_FCB_HEADER
37 {
38     FSRTL_COMMON_FCB_HEADER common_fcb_header;
39
40     //  The following two fields are supported only if
41     //  Flags2 contains FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS
42     //
43     //  This is a pointer to a Fast Mutex which may be used to
44     //  properly synchronize access to the FsRtl header.  The
45     //  Fast Mutex must be nonpaged.
46     PFAST_MUTEX FastMutex;
47
48     // This is a pointer to a list of context structures belonging to
49     // filesystem filter drivers that are linked above the filesystem.
50     // Each structure is headed by FSRTL_FILTER_CONTEXT.
51     LIST_ENTRY FilterContexts;
52 } FSRTL_ADVANCED_FCB_HEADER;
53 typedef FSRTL_ADVANCED_FCB_HEADER *PFSRTL_ADVANCED_FCB_HEADER;
54
55 #endif /* __INCLUDE_DDK_NTIFS_H */