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;
698 #endif // CDFS_TELEMETRY_DATA 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 // high order bit means directory. 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 1855 typedef struct _CDFS_TELEMETRY_DATA_CONTEXT {
1861 volatile LONG MissedTelemetryPoints;
1882 BOOLEAN GeneratePeriodicTelemetry;
1908 } CDFS_TELEMETRY_DATA_CONTEXT, *PCDFS_TELEMETRY_DATA_CONTEXT;
1910 #endif // CDFS_TELEMETRY_DATA struct _CD_SECTOR_CACHE_CHUNK CD_SECTOR_CACHE_CHUNK
UNICODE_STRING VersionString
struct _DIRENT_ENUM_CONTEXT DIRENT_ENUM_CONTEXT
ULONG_PTR ERESOURCE_THREAD
NODE_BYTE_SIZE NodeByteSize
PCDROM_TOC_LARGE CdromToc
struct _NAME_LINK NAME_LINK
ULONG MaxDelayedCloseCount
_In_ ULONG _In_ ULONG _In_ ULONG Length
NODE_BYTE_SIZE NodeByteSize
struct _FCB_NONPAGED FCB_NONPAGED
LIST_ENTRY AsyncCloseQueue
PREFIX_ENTRY * PPREFIX_ENTRY
PDEVICE_OBJECT FileSystemDeviceObject
PIRP_CONTEXT TopLevelIrpContext
FSRTL_ADVANCED_FCB_HEADER Header
IRP_CONTEXT * PIRP_CONTEXT
FCB_NONPAGED * PFCB_NONPAGED
ERESOURCE SectorCacheResource
TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS_LARGE]
struct _CD_IO_CONTEXT CD_IO_CONTEXT
ULONG SecCacheLRUChunkIndex
AUDIO_PLAY_HEADER * PAUDIO_PLAY_HEADER
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
DIRENT_ENUM_CONTEXT DirContext
struct _CD_SECTOR_CACHE_CHUNK * PCD_SECTOR_CACHE_CHUNK
_Field_range_(==, CDFS_NTC_IRP_CONTEXT_LITE) NODE_TYPE_CODE NodeTypeCode
DIRENT_ENUM_CONTEXT * PDIRENT_ENUM_CONTEXT
CD_SECTOR_CACHE_CHUNK SecCacheChunks[CD_SEC_CACHE_CHUNKS]
PDEVICE_OBJECT RealDevice
PCOMPOUND_DIRENT CurrentDirent
struct _FCB * RootIndexFcb
FSRTL_ADVANCED_FCB_HEADER
VOLUME_DEVICE_OBJECT * PVOLUME_DEVICE_OBJECT
WCHAR NameBuffer[BYTE_COUNT_EMBEDDED_NAME/sizeof(WCHAR) *2]
struct _CDROM_TOC_LARGE CDROM_TOC_LARGE
PRTL_SPLAY_LINKS IgnoreCaseRoot
PCOMPOUND_DIRENT InitialDirent
NODE_TYPE_CODE NodeTypeCode
struct _PREFIX_ENTRY PREFIX_ENTRY
PREFIX_ENTRY FileNamePrefix
PATH_ENUM_CONTEXT PathContext
_Field_range_(==, CDFS_NTC_FCB_NONPAGED) NODE_TYPE_CODE NodeTypeCode
PCOMPOUND_DIRENT PriorDirent
struct _VOLUME_DEVICE_OBJECT VOLUME_DEVICE_OBJECT
FAST_MUTEX AdvancedFcbHeaderMutex
struct _COMPOUND_PATH_ENTRY COMPOUND_PATH_ENTRY
NODE_BYTE_SIZE NodeByteSize
PRTL_SPLAY_LINKS ExactCaseRoot
struct _FILE_ENUM_CONTEXT FILE_ENUM_CONTEXT
ULONG PrimaryVdSectorOffset
PFILE_OBJECT VolumeLockFileObject
_Field_range_(==, CDFS_NTC_IRP_CONTEXT) NODE_TYPE_CODE NodeTypeCode
struct _IRP_CONTEXT_LITE IRP_CONTEXT_LITE
__volatile LONG FcbReference
LONGLONG TotalBlockByteCount
struct _FCB * VolumeDasdFcb
LONGLONG DataBlockByteCount
enum _FCB_CONDITION FCB_CONDITION
enum _VCB_CONDITION VCB_CONDITION
_Reserved_ PVOID Reserved
PDRIVER_OBJECT DriverObject
SINGLE_LIST_ENTRY IrpContextList
struct _CD_MCB_ENTRY CD_MCB_ENTRY
struct _PATH_ENTRY PATH_ENTRY
DEVICE_OBJECT DeviceObject
struct _THREAD_CONTEXT THREAD_CONTEXT
struct _FCB * PathTableFcb
struct _PATH_ENUM_CONTEXT PATH_ENUM_CONTEXT
#define MAXIMUM_NUMBER_TRACKS_LARGE
struct _THREAD_CONTEXT * ThreadContext
PATH_ENUM_CONTEXT * PPATH_ENUM_CONTEXT
THREAD_CONTEXT * PTHREAD_CONTEXT
PDEVICE_OBJECT TargetDeviceObject
WORK_QUEUE_ITEM WorkQueueItem
ULONG CurrentDirentOffset
LIST_ENTRY DelayedCloseLinks
__volatile NTSTATUS Status
WCHAR ShortNameBuffer[BYTE_COUNT_8_DOT_3/sizeof(WCHAR)]
ULONG MaximumPhysicalPages
struct _CDROM_TOC_LARGE * PCDROM_TOC_LARGE
__volatile LONG VcbUserReference
WCHAR NameBuffer[BYTE_COUNT_EMBEDDED_NAME/sizeof(WCHAR) *2]
XA_EXTENT_TYPE ExtentType
#define CDFS_NTC_DATA_HEADER
struct _IRP_CONTEXT IRP_CONTEXT
NODE_TYPE_CODE NodeTypeCode
CD_MCB_ENTRY * PCD_MCB_ENTRY
__volatile LONG VcbReference
COMPOUND_DIRENT Dirents[3]
ULONG ChildPathTableOffset
struct _RIFF_HEADER RIFF_HEADER
RIFF_HEADER * PRIFF_HEADER
ERESOURCE_THREAD ResourceThreadId
struct _AUDIO_PLAY_HEADER AUDIO_PLAY_HEADER
_Field_range_(==, CDFS_NTC_VCB) NODE_TYPE_CODE NodeTypeCode
struct _FCB_DATA FCB_DATA
#define CDFS_NTC_IRP_CONTEXT_LITE
_Field_range_(==, CDFS_NTC_CCB) NODE_TYPE_CODE NodeTypeCode
struct _FCB_INDEX FCB_INDEX
CD_IO_CONTEXT * PCD_IO_CONTEXT
PDEVICE_OBJECT RealDevice
NODE_BYTE_SIZE NodeByteSize
FILE_ENUM_CONTEXT * PFILE_ENUM_CONTEXT
#define CD_SEC_CACHE_CHUNKS
struct _IRP_CONTEXT * TopLevel
CACHE_MANAGER_CALLBACKS CacheManagerVolumeCallbacks
VCB_CONDITION VcbCondition
ULONG MaximumTransferRawSectors
PPREFIX_ENTRY ShortNamePrefix
__volatile LONG PostedRequestCount
LIST_ENTRY DelayedCloseQueue
COMPOUND_PATH_ENTRY * PCOMPOUND_PATH_ENTRY
#define BYTE_COUNT_8_DOT_3
#define CDFS_NTC_IRP_CONTEXT
struct _CD_IO_CONTEXT * IoContext
BOOLEAN ReduceDelayedClose
#define BYTE_COUNT_EMBEDDED_NAME
NODE_BYTE_SIZE NodeByteSize
SECTION_OBJECT_POINTERS SegmentObject
IRP_CONTEXT_LITE * PIRP_CONTEXT_LITE
KSPIN_LOCK OverflowQueueSpinLock
RTL_GENERIC_TABLE FcbTable
_Field_range_(==, CDFS_NTC_DATA_HEADER) NODE_TYPE_CODE NodeTypeCode
struct _COMPOUND_DIRENT COMPOUND_DIRENT
PFCB_NONPAGED FcbNonpaged
NODE_BYTE_SIZE NodeByteSize
enum _XA_EXTENT_TYPE XA_EXTENT_TYPE
ULONG MinDelayedCloseCount
COMPOUND_DIRENT * PCOMPOUND_DIRENT
WCHAR FileNameBuffer[BYTE_COUNT_EMBEDDED_NAME]
struct _CD_MCB_ENTRY * McbArray
#define CDFS_NTC_FCB_NONPAGED