171#define BYTE_COUNT_EMBEDDED_NAME (32)
306#define PREFIX_FLAG_EXACT_CASE_IN_TREE (0x00000001)
307#define PREFIX_FLAG_IGNORE_CASE_IN_TREE (0x00000002)
422#define CD_FLAGS_SHUTDOWN (0x0001)
433#define MAXIMUM_NUMBER_TRACKS_LARGE 0xAA
460#define CD_SEC_CACHE_CHUNKS 4
461#define CD_SEC_CHUNK_BLOCKS 0x18
689#ifdef CDFS_TELEMETRY_DATA
696 GUID VolumeCorrelationId;
702 ULONG SecCacheMisses;
706#define VCB_STATE_HSG (0x00000001)
707#define VCB_STATE_ISO (0x00000002)
708#define VCB_STATE_JOLIET (0x00000004)
709#define VCB_STATE_LOCKED (0x00000010)
710#define VCB_STATE_REMOVABLE_MEDIA (0x00000020)
711#define VCB_STATE_CDXA (0x00000040)
712#define VCB_STATE_AUDIO_DISK (0x00000080)
713#define VCB_STATE_NOTIFY_REMOUNT (0x00000100)
714#define VCB_STATE_VPB_NOT_ON_DEVICE (0x00000200)
715#define VCB_STATE_SHUTDOWN (0x00000400)
716#define VCB_STATE_DISMOUNTED (0x00000800)
786#if (NTDDI_VERSION < NTDDI_WIN8)
1042#define FCB_STATE_INITIALIZED (0x00000001)
1043#define FCB_STATE_IN_FCB_TABLE (0x00000002)
1044#define FCB_STATE_MODE2FORM2_FILE (0x00000004)
1045#define FCB_STATE_MODE2_FILE (0x00000008)
1046#define FCB_STATE_DA_FILE (0x00000010)
1052#define FCB_STATE_RAWSECTOR_MASK ( FCB_STATE_MODE2FORM2_FILE | \
1053 FCB_STATE_MODE2_FILE | \
1056#define SIZEOF_FCB_DATA \
1057 (FIELD_OFFSET( FCB, FcbType ) + sizeof( FCB_DATA ))
1059#define SIZEOF_FCB_INDEX \
1060 (FIELD_OFFSET( FCB, FcbType ) + sizeof( FCB_INDEX ))
1103#define CCB_FLAG_OPEN_BY_ID (0x00000001)
1104#define CCB_FLAG_OPEN_RELATIVE_BY_ID (0x00000002)
1105#define CCB_FLAG_IGNORE_CASE (0x00000004)
1106#define CCB_FLAG_OPEN_WITH_VERSION (0x00000008)
1107#define CCB_FLAG_DISMOUNT_ON_CLOSE (0x00000010)
1108#define CCB_FLAG_ALLOW_EXTENDED_DASD_IO (0x00000020)
1114#define CCB_FLAG_ENUM_NAME_EXP_HAS_WILD (0x00010000)
1115#define CCB_FLAG_ENUM_VERSION_EXP_HAS_WILD (0x00020000)
1116#define CCB_FLAG_ENUM_MATCH_ALL (0x00040000)
1117#define CCB_FLAG_ENUM_VERSION_MATCH_ALL (0x00080000)
1118#define CCB_FLAG_ENUM_RETURN_NEXT (0x00100000)
1119#define CCB_FLAG_ENUM_INITIALIZED (0x00200000)
1120#define CCB_FLAG_ENUM_NOMATCH_CONSTANT_ENTRY (0x00400000)
1213#define IRP_CONTEXT_FLAG_ON_STACK (0x00000001)
1214#define IRP_CONTEXT_FLAG_MORE_PROCESSING (0x00000002)
1215#define IRP_CONTEXT_FLAG_WAIT (0x00000004)
1216#define IRP_CONTEXT_FLAG_FORCE_POST (0x00000008)
1217#define IRP_CONTEXT_FLAG_TOP_LEVEL (0x00000010)
1218#define IRP_CONTEXT_FLAG_TOP_LEVEL_CDFS (0x00000020)
1219#define IRP_CONTEXT_FLAG_IN_FSP (0x00000040)
1220#define IRP_CONTEXT_FLAG_IN_TEARDOWN (0x00000080)
1221#define IRP_CONTEXT_FLAG_ALLOC_IO (0x00000100)
1222#define IRP_CONTEXT_FLAG_DISABLE_POPUPS (0x00000200)
1223#define IRP_CONTEXT_FLAG_FORCE_VERIFY (0x00000400)
1229#define IRP_CONTEXT_FLAG_FULL_NAME (0x10000000)
1230#define IRP_CONTEXT_FLAG_TRAIL_BACKSLASH (0x20000000)
1236#define IRP_CONTEXT_FLAGS_CLEAR_ON_POST ( \
1237 IRP_CONTEXT_FLAG_MORE_PROCESSING | \
1238 IRP_CONTEXT_FLAG_WAIT | \
1239 IRP_CONTEXT_FLAG_FORCE_POST | \
1240 IRP_CONTEXT_FLAG_TOP_LEVEL | \
1241 IRP_CONTEXT_FLAG_TOP_LEVEL_CDFS | \
1242 IRP_CONTEXT_FLAG_IN_FSP | \
1243 IRP_CONTEXT_FLAG_IN_TEARDOWN | \
1244 IRP_CONTEXT_FLAG_DISABLE_POPUPS \
1251#define IRP_CONTEXT_FLAGS_CLEAR_ON_RETRY ( \
1252 IRP_CONTEXT_FLAG_MORE_PROCESSING | \
1253 IRP_CONTEXT_FLAG_IN_TEARDOWN | \
1254 IRP_CONTEXT_FLAG_DISABLE_POPUPS \
1261#define IRP_CONTEXT_FSP_FLAGS ( \
1262 IRP_CONTEXT_FLAG_WAIT | \
1263 IRP_CONTEXT_FLAG_TOP_LEVEL | \
1264 IRP_CONTEXT_FLAG_TOP_LEVEL_CDFS | \
1265 IRP_CONTEXT_FLAG_IN_FSP \
1452#define VACB_MAPPING_MASK (VACB_MAPPING_GRANULARITY - 1)
1453#define LAST_VACB_SECTOR_OFFSET (VACB_MAPPING_GRANULARITY - SECTOR_SIZE)
1517#define PATH_ENTRY_FLAG_ALLOC_BUFFER (0x00000001)
1670#define DIRENT_FLAG_ALLOC_BUFFER (0x01)
1671#define DIRENT_FLAG_CONSTANT_ENTRY (0x02)
1673#define DIRENT_FLAG_NOT_PERSISTENT (0)
1739#define FILE_CONTEXT_MULTIPLE_DIRENTS (0x00000001)
1829#define FID_DIR_MASK 0x80000000
1831#define CdQueryFidDirentOffset(I) ((I).LowPart & ~FID_DIR_MASK)
1832#define CdQueryFidPathTableOffset(I) ((I).HighPart)
1833#define CdSetFidDirentOffset(I,D) ((I).LowPart = D)
1834#define CdSetFidPathTableOffset(I,P) ((I).HighPart = P)
1835#define CdFidIsDirectory(I) FlagOn( (I).LowPart, FID_DIR_MASK )
1836#define CdFidSetDirectory(I) SetFlag( (I).LowPart, FID_DIR_MASK )
1838#define CdSetFidFromParentAndDirent(I,F,D) { \
1839 CdSetFidPathTableOffset( (I), CdQueryFidPathTableOffset( (F)->FileId )); \
1840 CdSetFidDirentOffset( (I), (D)->DirentOffset ); \
1841 if (FlagOn( (D)->DirentFlags, CD_ATTRIBUTE_DIRECTORY )) { \
1842 CdFidSetDirectory((I)); \
1846#ifdef CDFS_TELEMETRY_DATA
1855typedef struct _CDFS_TELEMETRY_DATA_CONTEXT {
1861 volatile LONG MissedTelemetryPoints;
1882 BOOLEAN GeneratePeriodicTelemetry;
1908} CDFS_TELEMETRY_DATA_CONTEXT, *PCDFS_TELEMETRY_DATA_CONTEXT;
enum _XA_EXTENT_TYPE XA_EXTENT_TYPE
#define BYTE_COUNT_8_DOT_3
struct _PATH_ENUM_CONTEXT PATH_ENUM_CONTEXT
struct _THREAD_CONTEXT THREAD_CONTEXT
struct _FCB_INDEX FCB_INDEX
#define MAXIMUM_NUMBER_TRACKS_LARGE
CD_IO_CONTEXT * PCD_IO_CONTEXT
struct _NAME_LINK NAME_LINK
struct _IRP_CONTEXT IRP_CONTEXT
PREFIX_ENTRY * PPREFIX_ENTRY
struct _CDROM_TOC_LARGE * PCDROM_TOC_LARGE
struct _IRP_CONTEXT_LITE IRP_CONTEXT_LITE
FILE_ENUM_CONTEXT * PFILE_ENUM_CONTEXT
struct _DIRENT_ENUM_CONTEXT DIRENT_ENUM_CONTEXT
DIRENT_ENUM_CONTEXT * PDIRENT_ENUM_CONTEXT
struct _FCB_DATA FCB_DATA
AUDIO_PLAY_HEADER * PAUDIO_PLAY_HEADER
struct _COMPOUND_PATH_ENTRY COMPOUND_PATH_ENTRY
VOLUME_DEVICE_OBJECT * PVOLUME_DEVICE_OBJECT
#define CD_SEC_CACHE_CHUNKS
RIFF_HEADER * PRIFF_HEADER
THREAD_CONTEXT * PTHREAD_CONTEXT
FCB_NONPAGED * PFCB_NONPAGED
struct _RIFF_HEADER RIFF_HEADER
struct _CD_SECTOR_CACHE_CHUNK CD_SECTOR_CACHE_CHUNK
CD_MCB_ENTRY * PCD_MCB_ENTRY
PATH_ENUM_CONTEXT * PPATH_ENUM_CONTEXT
struct _CDROM_TOC_LARGE CDROM_TOC_LARGE
struct _CD_SECTOR_CACHE_CHUNK * PCD_SECTOR_CACHE_CHUNK
COMPOUND_PATH_ENTRY * PCOMPOUND_PATH_ENTRY
struct _CD_IO_CONTEXT CD_IO_CONTEXT
struct _FCB_NONPAGED FCB_NONPAGED
IRP_CONTEXT * PIRP_CONTEXT
struct _VOLUME_DEVICE_OBJECT VOLUME_DEVICE_OBJECT
struct _PREFIX_ENTRY PREFIX_ENTRY
COMPOUND_DIRENT * PCOMPOUND_DIRENT
enum _VCB_CONDITION VCB_CONDITION
IRP_CONTEXT_LITE * PIRP_CONTEXT_LITE
struct _CD_MCB_ENTRY CD_MCB_ENTRY
struct _FILE_ENUM_CONTEXT FILE_ENUM_CONTEXT
struct _COMPOUND_DIRENT COMPOUND_DIRENT
#define BYTE_COUNT_EMBEDDED_NAME
struct _PATH_ENTRY PATH_ENTRY
struct _AUDIO_PLAY_HEADER AUDIO_PLAY_HEADER
enum _FCB_CONDITION FCB_CONDITION
#define CDFS_NTC_IRP_CONTEXT_LITE
#define CDFS_NTC_FCB_NONPAGED
#define CDFS_NTC_IRP_CONTEXT
#define CDFS_NTC_DATA_HEADER
_In_ ULONG _In_ ULONG _In_ ULONG Length
ULONG CurrentDirentOffset
_Field_range_(==, CDFS_NTC_CCB) NODE_TYPE_CODE NodeTypeCode
NODE_BYTE_SIZE NodeByteSize
NODE_TYPE_CODE NodeTypeCode
TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS_LARGE]
_Field_range_(==, CDFS_NTC_DATA_HEADER) NODE_TYPE_CODE NodeTypeCode
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
ULONG MinDelayedCloseCount
NODE_BYTE_SIZE NodeByteSize
BOOLEAN ReduceDelayedClose
LIST_ENTRY AsyncCloseQueue
CACHE_MANAGER_CALLBACKS CacheManagerVolumeCallbacks
ULONG MaxDelayedCloseCount
SINGLE_LIST_ENTRY IrpContextList
PDRIVER_OBJECT DriverObject
PDEVICE_OBJECT FileSystemDeviceObject
LIST_ENTRY DelayedCloseQueue
ERESOURCE_THREAD ResourceThreadId
__volatile NTSTATUS Status
LONGLONG TotalBlockByteCount
LONGLONG DataBlockByteCount
struct _CD_MCB_ENTRY * McbArray
UNICODE_STRING VersionString
DIRENT_ENUM_CONTEXT DirContext
PATH_ENUM_CONTEXT PathContext
XA_EXTENT_TYPE ExtentType
WCHAR NameBuffer[BYTE_COUNT_EMBEDDED_NAME/sizeof(WCHAR) *2]
ULONG ChildPathTableOffset
PRTL_SPLAY_LINKS IgnoreCaseRoot
PRTL_SPLAY_LINKS ExactCaseRoot
FAST_MUTEX AdvancedFcbHeaderMutex
_Field_range_(==, CDFS_NTC_FCB_NONPAGED) NODE_TYPE_CODE NodeTypeCode
SECTION_OBJECT_POINTERS SegmentObject
NODE_BYTE_SIZE NodeByteSize
PREFIX_ENTRY FileNamePrefix
FSRTL_ADVANCED_FCB_HEADER Header
PPREFIX_ENTRY ShortNamePrefix
FSRTL_ADVANCED_FCB_HEADER
__volatile LONG FcbReference
PFCB_NONPAGED FcbNonpaged
PCOMPOUND_DIRENT InitialDirent
COMPOUND_DIRENT Dirents[3]
WCHAR ShortNameBuffer[BYTE_COUNT_8_DOT_3/sizeof(WCHAR)]
PCOMPOUND_DIRENT CurrentDirent
PCOMPOUND_DIRENT PriorDirent
LIST_ENTRY DelayedCloseLinks
PDEVICE_OBJECT RealDevice
NODE_BYTE_SIZE NodeByteSize
_Field_range_(==, CDFS_NTC_IRP_CONTEXT_LITE) NODE_TYPE_CODE NodeTypeCode
NODE_TYPE_CODE NodeTypeCode
PDEVICE_OBJECT RealDevice
NODE_BYTE_SIZE NodeByteSize
struct _IRP_CONTEXT * TopLevel
_Field_range_(==, CDFS_NTC_IRP_CONTEXT) NODE_TYPE_CODE NodeTypeCode
struct _CD_IO_CONTEXT * IoContext
struct _THREAD_CONTEXT * ThreadContext
WORK_QUEUE_ITEM WorkQueueItem
WCHAR NameBuffer[BYTE_COUNT_EMBEDDED_NAME/sizeof(WCHAR) *2]
WCHAR FileNameBuffer[BYTE_COUNT_EMBEDDED_NAME]
PIRP_CONTEXT TopLevelIrpContext
struct _FCB * RootIndexFcb
ULONG MaximumTransferRawSectors
CD_SECTOR_CACHE_CHUNK SecCacheChunks[CD_SEC_CACHE_CHUNKS]
struct _FCB * VolumeDasdFcb
VCB_CONDITION VcbCondition
ULONG MaximumPhysicalPages
ULONG SecCacheLRUChunkIndex
__volatile LONG VcbUserReference
PFILE_OBJECT VolumeLockFileObject
NODE_BYTE_SIZE NodeByteSize
_Field_range_(==, CDFS_NTC_VCB) NODE_TYPE_CODE NodeTypeCode
struct _FCB * PathTableFcb
ULONG PrimaryVdSectorOffset
PCDROM_TOC_LARGE CdromToc
__volatile LONG VcbReference
PDEVICE_OBJECT TargetDeviceObject
RTL_GENERIC_TABLE FcbTable
ERESOURCE SectorCacheResource
__volatile LONG PostedRequestCount
DEVICE_OBJECT DeviceObject
KSPIN_LOCK OverflowQueueSpinLock
_Reserved_ PVOID Reserved
ULONG_PTR ERESOURCE_THREAD