24#define __volatile volatile
251#if (NTDDI_VERSION > NTDDI_WIN8)
553 ULONG CloseContextCount;
559#define VCB_STATE_FLAG_LOCKED (0x00000001)
560#define VCB_STATE_FLAG_REMOVABLE_MEDIA (0x00000002)
561#define VCB_STATE_FLAG_VOLUME_DIRTY (0x00000004)
562#define VCB_STATE_FLAG_MOUNTED_DIRTY (0x00000010)
563#define VCB_STATE_FLAG_SHUTDOWN (0x00000040)
564#define VCB_STATE_FLAG_CLOSE_IN_PROGRESS (0x00000080)
565#define VCB_STATE_FLAG_DELETED_FCB (0x00000100)
566#define VCB_STATE_FLAG_CREATE_IN_PROGRESS (0x00000200)
567#define VCB_STATE_FLAG_BOOT_OR_PAGING_FILE (0x00000800)
568#define VCB_STATE_FLAG_DEFERRED_FLUSH (0x00001000)
569#define VCB_STATE_FLAG_ASYNC_CLOSE_ACTIVE (0x00002000)
570#define VCB_STATE_FLAG_WRITE_PROTECTED (0x00004000)
571#define VCB_STATE_FLAG_REMOVAL_PREVENTED (0x00008000)
572#define VCB_STATE_FLAG_VOLUME_DISMOUNTED (0x00010000)
573#define VCB_STATE_VPB_NOT_ON_DEVICE (0x00020000)
574#define VCB_STATE_FLAG_VPB_MUST_BE_FREED (0x00040000)
575#define VCB_STATE_FLAG_DISMOUNT_IN_PROGRESS (0x00080000)
576#define VCB_STATE_FLAG_BAD_BLOCKS_POPULATED (0x00100000)
577#define VCB_STATE_FLAG_HOTPLUGGABLE (0x00200000)
578#define VCB_STATE_FLAG_MOUNT_IN_PROGRESS (0x00800000)
593#define FILE_SYSTEM_STATISTICS_WITHOUT_PAD (sizeof( FILESYSTEM_STATISTICS ) + sizeof( FAT_STATISTICS ))
853#ifdef SYSCACHE_COMPILE
1073#if (NTDDI_VERSION < NTDDI_WIN8)
1179#ifndef BUILDING_FSKDEXT
1193#define FCB_STATE_DELETE_ON_CLOSE (0x00000001)
1194#define FCB_STATE_TRUNCATE_ON_CLOSE (0x00000002)
1195#define FCB_STATE_PAGING_FILE (0x00000004)
1196#define FCB_STATE_FORCE_MISS_IN_PROGRESS (0x00000008)
1197#define FCB_STATE_FLUSH_FAT (0x00000010)
1198#define FCB_STATE_TEMPORARY (0x00000020)
1199#define FCB_STATE_SYSTEM_FILE (0x00000080)
1200#define FCB_STATE_NAMES_IN_SPLAY_TREE (0x00000100)
1201#define FCB_STATE_HAS_OEM_LONG_NAME (0x00000200)
1202#define FCB_STATE_HAS_UNICODE_LONG_NAME (0x00000400)
1203#define FCB_STATE_DELAY_CLOSE (0x00000800)
1210#define FCB_STATE_8_LOWER_CASE (0x00001000)
1211#define FCB_STATE_3_LOWER_CASE (0x00002000)
1217#define FCB_STATE_DENY_DEFRAG (0x00004000)
1224#define FCB_STATE_ZERO_ON_DEALLOCATION (0x00080000)
1230#define DCB_UNION_SLACK_SPACE ((ULONG) \
1231 (FIELD_OFFSET(DCB, EaModificationCount) - \
1232 FIELD_OFFSET(DCB, Specific.Dcb.FreeDirentBitmapBuffer)) \
1241#define FCB_LOOKUP_ALLOCATIONSIZE_HINT ((LONGLONG) -1)
1252#define CCB_FLAG_MATCH_ALL (0x0001)
1253#define CCB_FLAG_SKIP_SHORT_NAME_COMPARE (0x0002)
1259#define CCB_FLAG_FREE_OEM_BEST_FIT (0x0004)
1260#define CCB_FLAG_FREE_UNICODE (0x0008)
1266#define CCB_FLAG_USER_SET_LAST_WRITE (0x0010)
1267#define CCB_FLAG_USER_SET_LAST_ACCESS (0x0020)
1268#define CCB_FLAG_USER_SET_CREATION (0x0040)
1275#define CCB_FLAG_READ_ONLY (0x0080)
1281#define CCB_FLAG_DASD_FLUSH_DONE (0x0100)
1282#define CCB_FLAG_DASD_PURGE_DONE (0x0200)
1289#define CCB_FLAG_DELETE_ON_CLOSE (0x0400)
1296#define CCB_FLAG_OPENED_BY_SHORTNAME (0x0800)
1303#define CCB_FLAG_QUERY_TEMPLATE_MIXED (0x1000)
1310#define CCB_FLAG_ALLOW_EXTENDED_DASD_IO (0x2000)
1317#define CCB_FLAG_MATCH_VOLUME_ID (0x4000)
1324#define CCB_FLAG_CLOSE_CONTEXT (0x8000)
1331#define CCB_FLAG_COMPLETE_DISMOUNT (0x10000)
1338#define CCB_FLAG_MANAGE_VOLUME_ACCESS (0x20000)
1345#define CCB_FLAG_SENT_FORMAT_UNIT (0x40000)
1352#define CCB_FLAG_DENY_DEFRAG (0x80000)
1358#define CCB_FLAG_FIRST_WRITE_SEEN (0x100000)
1360typedef struct _CCB {
1464#define REPINNED_BCBS_ARRAY_SIZE (4)
1562#define IRP_CONTEXT_FLAG_DISABLE_DIRTY (0x00000001)
1563#define IRP_CONTEXT_FLAG_WAIT (0x00000002)
1564#define IRP_CONTEXT_FLAG_WRITE_THROUGH (0x00000004)
1565#define IRP_CONTEXT_FLAG_DISABLE_WRITE_THROUGH (0x00000008)
1566#define IRP_CONTEXT_FLAG_RECURSIVE_CALL (0x00000010)
1567#define IRP_CONTEXT_FLAG_DISABLE_POPUPS (0x00000020)
1568#define IRP_CONTEXT_FLAG_DEFERRED_WRITE (0x00000040)
1569#define IRP_CONTEXT_FLAG_VERIFY_READ (0x00000080)
1570#define IRP_CONTEXT_STACK_IO_CONTEXT (0x00000100)
1571#define IRP_CONTEXT_FLAG_IN_FSP (0x00000200)
1572#define IRP_CONTEXT_FLAG_USER_IO (0x00000400)
1573#define IRP_CONTEXT_FLAG_DISABLE_RAISE (0x00000800)
1574#define IRP_CONTEXT_FLAG_OVERRIDE_VERIFY (0x00001000)
1575#define IRP_CONTEXT_FLAG_CLEANUP_BREAKING_OPLOCK (0x00002000)
1578#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
1579#define IRP_CONTEXT_FLAG_SWAPPED_STACK (0x00100000)
1582#define IRP_CONTEXT_FLAG_PARENT_BY_CHILD (0x80000000)
1717#define EA_BCB_ARRAY_SIZE 8
1731#define EA_RANGE_HEADER_SIZE (FIELD_OFFSET( EA_RANGE, BcbArray ))
1737#define WIDE_LATIN_CAPITAL_A (0xff21)
1738#define WIDE_LATIN_CAPITAL_Z (0xff3a)
1739#define WIDE_LATIN_SMALL_A (0xff41)
1740#define WIDE_LATIN_SMALL_Z (0xff5a)
1754#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
enum _VCB_CONDITION VCB_CONDITION
enum _FCB_CONDITION FCB_CONDITION
struct _EA_RANGE * PEA_RANGE
struct _FAT_DATA FAT_DATA
struct _NON_PAGED_FCB NON_PAGED_FCB
DEFERRED_FLUSH_CONTEXT * PDEFERRED_FLUSH_CONTEXT
struct _IRP_CONTEXT IRP_CONTEXT
#define EA_BCB_ARRAY_SIZE
FILE_SYSTEM_STATISTICS * PFILE_SYSTEM_STATISTICS
REPINNED_BCBS * PREPINNED_BCBS
struct _PAGING_FILE_OVERFLOW_PACKET * PPAGING_FILE_OVERFLOW_PACKET
struct _FAT_IO_CONTEXT FAT_IO_CONTEXT
struct _FAT_CALLOUT_PARAMETERS * PFAT_CALLOUT_PARAMETERS
VOLUME_DEVICE_OBJECT * PVOLUME_DEVICE_OBJECT
NON_PAGED_FCB * PNON_PAGED_FCB
CLOSE_CONTEXT * PCLOSE_CONTEXT
struct _EA_RANGE EA_RANGE
DELETE_CONTEXT * PDELETE_CONTEXT
struct _FAT_CALLOUT_PARAMETERS FAT_CALLOUT_PARAMETERS
FAT_IO_CONTEXT * PFAT_IO_CONTEXT
struct _FILE_NAME_NODE FILE_NAME_NODE
enum _CLUSTER_TYPE CLUSTER_TYPE
struct _PAGING_FILE_OVERFLOW_PACKET PAGING_FILE_OVERFLOW_PACKET
struct _FAT_WINDOW FAT_WINDOW
IRP_CONTEXT * PIRP_CONTEXT
struct _VOLUME_DEVICE_OBJECT VOLUME_DEVICE_OBJECT
struct _CLEAN_AND_DIRTY_VOLUME_PACKET CLEAN_AND_DIRTY_VOLUME_PACKET
enum _VCB_CONDITION VCB_CONDITION
#define REPINNED_BCBS_ARRAY_SIZE
FILE_NAME_NODE * PFILE_NAME_NODE
struct _REPINNED_BCBS REPINNED_BCBS
struct _FILE_SYSTEM_STATISTICS FILE_SYSTEM_STATISTICS
struct _DELETE_CONTEXT DELETE_CONTEXT
struct _CLEAN_AND_DIRTY_VOLUME_PACKET * PCLEAN_AND_DIRTY_VOLUME_PACKET
enum _FCB_CONDITION FCB_CONDITION
struct _DEFERRED_FLUSH_CONTEXT DEFERRED_FLUSH_CONTEXT
#define FILE_SYSTEM_STATISTICS_WITHOUT_PAD
enum _TYPE_OF_OPEN TypeOfOpen
ULONG EaModificationCount
union _CCB::@761::@763::@765 OemQueryTemplate
PVOID EncryptionOnCloseContext
UNICODE_STRING UnicodeQueryTemplate
CLOSE_CONTEXT CloseContext
ULONG OffsetOfNextEaToReturn
NODE_BYTE_SIZE NodeByteSize
NODE_TYPE_CODE NodeTypeCode
VBO OffsetToStartSearchFrom
BOOLEAN ContainsWildCards
PBCB BcbArray[EA_BCB_ARRAY_SIZE]
struct _FAT_CALLOUT_PARAMETERS::@768::@770 Create
PVOID DiskFileSystemDeviceObject
CACHE_MANAGER_CALLBACKS CacheManagerNoOpCallbacks
PDRIVER_OBJECT DriverObject
KSPIN_LOCK GeneralSpinLock
NODE_TYPE_CODE NodeTypeCode
NODE_BYTE_SIZE NodeByteSize
BOOLEAN CodePageInvariant
LIST_ENTRY AsyncCloseList
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
PVOID CdromFileSystemDeviceObject
PIO_WORKITEM FatCloseItem
LIST_ENTRY DelayedCloseList
union _FAT_IO_CONTEXT::@766 Wait
struct _FAT_IO_CONTEXT::@766::@767 Async
ERESOURCE_THREAD ResourceThreadId
PNON_PAGED_FCB NonPagedFcb
LIST_ENTRY ParentDcbLinks
PRTL_SPLAY_LINKS RootUnicodeNode
VBO LfnOffsetWithinDirectory
LARGE_INTEGER CreationTime
RTL_BITMAP FreeDirentBitmap
UNICODE_STRING ExactCaseLongName
PFILE_OBJECT DirectoryFile
UNICODE_STRING FullFileName
ULONG EaModificationCount
struct _FCB::@757::@759 Dcb
ULONG FreeDirentBitmapBuffer[1]
union _FCB::@758 LongName
FCB_CONDITION FcbCondition
PRTL_SPLAY_LINKS RootOemNode
LIST_ENTRY ParentDcbQueue
LARGE_INTEGER LastWriteTime
struct _FCB::@757::@760 Fcb
FSRTL_ADVANCED_FCB_HEADER Header
LARGE_INTEGER LastAccessTime
__volatile ULONG DirectoryFileOpenCount
CLONG NonCachedUncleanCount
CLONG PurgeFailureModeEnableCount
VBO DirentOffsetWithinDirectory
union _FCB::@757 Specific
union _FILE_NAME_NODE::@756 Name
FILESYSTEM_STATISTICS Common
UCHAR Pad[((FILE_SYSTEM_STATISTICS_WITHOUT_PAD+0x3f) &~0x3f) - FILE_SYSTEM_STATISTICS_WITHOUT_PAD]
NODE_TYPE_CODE NodeTypeCode
PDEVICE_OBJECT RealDevice
NODE_BYTE_SIZE NodeByteSize
struct _FAT_IO_CONTEXT * FatIoContext
WORK_QUEUE_ITEM WorkQueueItem
PKEVENT OutstandingAsyncEvent
ULONG OutstandingAsyncWrites
FAST_MUTEX AdvancedFcbHeaderMutex
SECTION_OBJECT_POINTERS SectionObjectPointers
struct _REPINNED_BCBS * Next
PBCB Bcb[REPINNED_BCBS_ARRAY_SIZE]
PFILE_OBJECT FileObjectWithVcbLocked
CLONG DirectAccessOpenCount
LIST_ENTRY AsyncCloseList
struct _FILE_SYSTEM_STATISTICS * Statistics
LARGE_INTEGER LastFatMarkVolumeDirtyCall
FAST_MUTEX DirectoryFileCreationMutex
PDEVICE_OBJECT CurrentDevice
FSRTL_ADVANCED_FCB_HEADER VolumeFileHeader
PFAT_WINDOW CurrentWindow
VCB_CONDITION VcbCondition
FAST_MUTEX FreeClusterBitMapMutex
UNICODE_STRING VolumeGuidPath
__volatile ULONG InternalOpenCount
__volatile ULONG ResidualOpenCount
PFILE_OBJECT VirtualVolumeFile
ULONG NumberOfFreeClusters
struct _VCB::@755 AllocationSupport
FAST_MUTEX AdvancedFcbHeaderMutex
UCHAR LogOfBytesPerSector
SECTION_OBJECT_POINTERS SectionObjectPointers
PDEVICE_OBJECT TargetDeviceObject
RTL_BITMAP FreeClusterBitMap
ERESOURCE ChangeBitMapResource
PFILE_OBJECT VirtualEaFile
UCHAR LogOfBytesPerCluster
LIST_ENTRY DelayedCloseList
PUCHAR First0x24BytesOfBootSector
DEVICE_OBJECT DeviceObject
KSPIN_LOCK OverflowQueueSpinLock
FSRTL_COMMON_FCB_HEADER VolumeFileHeader
ULONG_PTR ERESOURCE_THREAD