#ifndef __INCLUDE_DDK_NTIFS_H #define __INCLUDE_DDK_NTIFS_H struct _BCB; typedef struct _BCB* PBCB; struct _MEMORY_AREA; struct _CACHE_SEGMENT; typedef struct _CACHE_SEGMENT* PCACHE_SEGMENT; NTSTATUS STDCALL CcRosReleaseCacheSegment (struct _BCB* Bcb, struct _CACHE_SEGMENT* CacheSeg, BOOLEAN Valid, BOOLEAN Dirty, BOOLEAN Mapped); NTSTATUS STDCALL CcRosRequestCacheSegment (struct _BCB* Bcb, ULONG FileOffset, PVOID* BaseAddress, PBOOLEAN UptoDate, struct _CACHE_SEGMENT** CacheSeg); NTSTATUS STDCALL CcRosInitializeFileCache (PFILE_OBJECT FileObject, struct _BCB** Bcb, ULONG CacheSegmentSize); NTSTATUS STDCALL CcRosReleaseFileCache (PFILE_OBJECT FileObject, struct _BCB* Bcb); #include #include #include #include typedef struct _FSRTL_COMMON_FCB_HEADER { CSHORT NodeTypeCode; CSHORT NodeByteSize; UCHAR Flags; UCHAR IsFastIoPossible; // really type FAST_IO_POSSIBLE UCHAR Flags2; UCHAR Reserved; /* always 0 */ PERESOURCE Resource; PERESOURCE PagingIoResource; LARGE_INTEGER AllocationSize; LARGE_INTEGER FileSize; LARGE_INTEGER ValidDataLength; } FSRTL_COMMON_FCB_HEADER; typedef FSRTL_COMMON_FCB_HEADER *PFSRTL_COMMON_FCB_HEADER; // This Fcb header is used for files which support caching // of compressed data, and related new support. typedef struct _FSRTL_ADVANCED_FCB_HEADER { FSRTL_COMMON_FCB_HEADER common_fcb_header; // The following two fields are supported only if // Flags2 contains FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS // // This is a pointer to a Fast Mutex which may be used to // properly synchronize access to the FsRtl header. The // Fast Mutex must be nonpaged. PFAST_MUTEX FastMutex; // This is a pointer to a list of context structures belonging to // filesystem filter drivers that are linked above the filesystem. // Each structure is headed by FSRTL_FILTER_CONTEXT. LIST_ENTRY FilterContexts; } FSRTL_ADVANCED_FCB_HEADER; typedef FSRTL_ADVANCED_FCB_HEADER *PFSRTL_ADVANCED_FCB_HEADER; #endif /* __INCLUDE_DDK_NTIFS_H */