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] ); \ 141 #include <pshpack1.h>
enum _FS_REC_STATE FS_REC_STATE
_In_ ULONG _In_ ULONG _In_ ULONG Length
NTSTATUS NTAPI FsRecCdfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _PACKED_BOOT_SECTOR PACKED_BOOT_SECTOR
NTSTATUS NTAPI FsRecExt2FsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI FsRecUdfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _PACKED_BIOS_PARAMETER_BLOCK PACKED_BIOS_PARAMETER_BLOCK
struct BIOS_PARAMETER_BLOCK BIOS_PARAMETER_BLOCK
EXTENT ReserveVolumeDescriptorExtent
enum _FS_REC_STATE * PFS_REC_STATE
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)
NTSTATUS NTAPI FsRecNtfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _PACKED_BOOT_SECTOR * PPACKED_BOOT_SECTOR
NTSTATUS NTAPI FsRecBtrfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
EXTENT MainVolumeDescriptorExtent
struct _PACKED_BIOS_PARAMETER_BLOCK * PPACKED_BIOS_PARAMETER_BLOCK
UCHAR PhysicalDriveNumber
NTSTATUS NTAPI FsRecLoadFileSystem(IN PDEVICE_OBJECT DeviceObject, IN PWCHAR DriverServiceName)
NTSTATUS NTAPI FsRecVfatFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct BIOS_PARAMETER_BLOCK * PBIOS_PARAMETER_BLOCK
struct _DEVICE_EXTENSION DEVICE_EXTENSION
PACKED_BIOS_PARAMETER_BLOCK PackedBpb
ULONG32 LargeSectorsPerFat
NTSTATUS NTAPI FsRecFfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
struct _DEVICE_EXTENSION * PDEVICE_EXTENSION
_In_ ULONG _In_ ULONG Offset
enum _FILE_SYSTEM_TYPE * PFILE_SYSTEM_TYPE
BOOLEAN NTAPI FsRecGetDeviceSectors(IN PDEVICE_OBJECT DeviceObject, IN ULONG SectorSize, OUT PLARGE_INTEGER SectorCount)
ULONG32 RootDirFirstCluster
enum _FILE_SYSTEM_TYPE FILE_SYSTEM_TYPE
UCHAR SectorsPerCluster[1]
BOOLEAN NTAPI FsRecGetDeviceSectorSize(IN PDEVICE_OBJECT DeviceObject, OUT PULONG SectorSize)
NTSTATUS NTAPI FsRecReiserfsFsControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PULONG MinorVersion OPTIONAL