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