16#define FSREC_TAG 'cRsF'
19#define UDFS_VRS_START_OFFSET 32768
20#define UDFS_AVDP_SECTOR 256
24#define ROUND_UP(n, align) \
25 ROUND_DOWN(((ULONG)n) + (align) - 1, (align))
27#define ROUND_DOWN(n, align) \
28 (((ULONG)n) & ~((align) - 1l))
50#define CopyUchar1(Dst,Src) { \
51 *((UCHAR1 *)(Dst)) = *((UNALIGNED UCHAR1 *)(Src)); \
54#define CopyUchar2(Dst,Src) { \
55 *((UCHAR2 *)(Dst)) = *((UNALIGNED UCHAR2 *)(Src)); \
58#define CopyUchar4(Dst,Src) { \
59 *((UCHAR4 *)(Dst)) = *((UNALIGNED UCHAR4 *)(Src)); \
62#define FatUnpackBios(Bios,Pbios) { \
63 CopyUchar2(&(Bios)->BytesPerSector, &(Pbios)->BytesPerSector[0] ); \
64 CopyUchar1(&(Bios)->SectorsPerCluster, &(Pbios)->SectorsPerCluster[0]); \
65 CopyUchar2(&(Bios)->ReservedSectors, &(Pbios)->ReservedSectors[0] ); \
66 CopyUchar1(&(Bios)->Fats, &(Pbios)->Fats[0] ); \
67 CopyUchar2(&(Bios)->RootEntries, &(Pbios)->RootEntries[0] ); \
68 CopyUchar2(&(Bios)->Sectors, &(Pbios)->Sectors[0] ); \
69 CopyUchar1(&(Bios)->Media, &(Pbios)->Media[0] ); \
70 CopyUchar2(&(Bios)->SectorsPerFat, &(Pbios)->SectorsPerFat[0] ); \
71 CopyUchar2(&(Bios)->SectorsPerTrack, &(Pbios)->SectorsPerTrack[0] ); \
72 CopyUchar2(&(Bios)->Heads, &(Pbios)->Heads[0] ); \
73 CopyUchar4(&(Bios)->HiddenSectors, &(Pbios)->HiddenSectors[0] ); \
74 CopyUchar4(&(Bios)->LargeSectors, &(Pbios)->LargeSectors[0] ); \
NTSTATUS NTAPI FsRecExtFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
enum _FILE_SYSTEM_TYPE * PFILE_SYSTEM_TYPE
enum _FS_REC_STATE FS_REC_STATE
struct _DEVICE_EXTENSION DEVICE_EXTENSION
struct _PACKED_BIOS_PARAMETER_BLOCK PACKED_BIOS_PARAMETER_BLOCK
struct _PACKED_BOOT_SECTOR * PPACKED_BOOT_SECTOR
struct BIOS_PARAMETER_BLOCK * PBIOS_PARAMETER_BLOCK
NTSTATUS NTAPI FsRecLoadFileSystem(IN PDEVICE_OBJECT DeviceObject, IN PWCHAR DriverServiceName)
NTSTATUS NTAPI FsRecFatxFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
enum _FILE_SYSTEM_TYPE FILE_SYSTEM_TYPE
BOOLEAN NTAPI FsRecReadBlock(IN PDEVICE_OBJECT DeviceObject, IN PLARGE_INTEGER Offset, IN ULONG Length, IN ULONG SectorSize, IN OUT PVOID *Buffer, OUT PBOOLEAN DeviceError OPTIONAL)
enum _FS_REC_STATE * PFS_REC_STATE
NTSTATUS NTAPI FsRecNtfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _PACKED_BOOT_SECTOR PACKED_BOOT_SECTOR
NTSTATUS NTAPI FsRecFfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _PACKED_BIOS_PARAMETER_BLOCK * PPACKED_BIOS_PARAMETER_BLOCK
BOOLEAN NTAPI FsRecGetDeviceSectors(IN PDEVICE_OBJECT DeviceObject, IN ULONG SectorSize, OUT PLARGE_INTEGER SectorCount)
BOOLEAN NTAPI FsRecGetDeviceSectorSize(IN PDEVICE_OBJECT DeviceObject, OUT PULONG SectorSize)
NTSTATUS NTAPI FsRecReiserfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _DEVICE_EXTENSION * PDEVICE_EXTENSION
NTSTATUS NTAPI FsRecVfatFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI FsRecBtrfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI FsRecCdfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI FsRecUdfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
PULONG MinorVersion OPTIONAL
ULONG32 LargeSectorsPerFat
ULONG32 RootDirFirstCluster
EXTENT ReserveVolumeDescriptorExtent
EXTENT MainVolumeDescriptorExtent
UCHAR SectorsPerCluster[1]
UCHAR PhysicalDriveNumber
PACKED_BIOS_PARAMETER_BLOCK PackedBpb
_In_ PDEVICE_OBJECT DeviceObject