191 lines
3.8 KiB
C++
191 lines
3.8 KiB
C++
/*++
|
|
|
|
Copyright (c) 1991-2000 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
udflvol.hxx
|
|
|
|
Abstract:
|
|
|
|
This class supplies the UDF-only SUPERAREA methods.
|
|
|
|
Author:
|
|
|
|
Centis Biks (cbiks) 05-May-2000
|
|
|
|
--*/
|
|
|
|
#pragma once
|
|
|
|
#include "ScanADs.hxx"
|
|
|
|
DECLARE_CLASS( UDF_LVOL );
|
|
|
|
class UDF_LVOL : public OBJECT {
|
|
|
|
public:
|
|
|
|
UUDF_EXPORT
|
|
DECLARE_CONSTRUCTOR(UDF_LVOL);
|
|
|
|
VIRTUAL
|
|
UUDF_EXPORT
|
|
~UDF_LVOL();
|
|
|
|
NONVIRTUAL
|
|
UUDF_EXPORT
|
|
BOOLEAN
|
|
Initialize(
|
|
IN PUDF_SA UdfSA,
|
|
IN OUT PMESSAGE Message,
|
|
IN PNSR_LVOL LogicalVolumeDescriptor,
|
|
IN PNSR_PART PartitionDescriptor
|
|
);
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
BOOL CheckFileStructure();
|
|
BOOL ReadFileSetDescriptor();
|
|
BOOL ReadIcbDirectEntry( LONGAD*, USHORT*, PICBFILE*, OUT PULONGLONG BlockNum, OUT PUINT BlockSize, UINT );
|
|
|
|
BOOL ExpandDirectoryHierarchy( PICBFILE FileIcbEntry, BOOL isStreamDir, PUINT TotalFiles, PUINT TotalDirs, UINT ExpandDirRecursionCount );
|
|
BOOL ExpandFID( PNSR_FID NsrFid, BOOL isStreamDir, PUINT TotalFiles, PUINT TotalDirs, UINT ExpandDirRecursionCount );
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
BOOL Read(
|
|
IN ULONG StartingSector,
|
|
IN SECTORCOUNT NumberOfSectors,
|
|
OUT PVOID Buffer
|
|
);
|
|
|
|
BOOL Write(
|
|
IN ULONG StartingSector,
|
|
IN SECTORCOUNT NumberOfSectors,
|
|
OUT PVOID Buffer
|
|
);
|
|
|
|
ULONG QuerySectorSize() CONST;
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
BOOL MarkBlocksUsed
|
|
(
|
|
IN ULONGLONG StartingSector,
|
|
IN SECTORCOUNT NumberOfSectors
|
|
);
|
|
|
|
//
|
|
// UNDONE, CBiks, 8/9/2000
|
|
// This function should be private when I figure out the rest of the class hierarchy.
|
|
//
|
|
|
|
ULONGLONG
|
|
TranslateBlockNum
|
|
(
|
|
ULONG Lbn,
|
|
USHORT Partition
|
|
);
|
|
|
|
private:
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
NONVIRTUAL
|
|
VOID
|
|
Construct(
|
|
);
|
|
|
|
NONVIRTUAL
|
|
VOID
|
|
Destroy(
|
|
);
|
|
|
|
BOOL ReadSpaceBitmapDescriptor();
|
|
|
|
BOOL
|
|
VerifySBDAllocation
|
|
(
|
|
PNSR_SBD SBDOriginal,
|
|
PNSR_SBD SBDNew
|
|
);
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
BOOL
|
|
CreateLostClusterFile
|
|
(
|
|
ULONG StartSector,
|
|
ULONG EndSector,
|
|
PNSR_SBD SBDOriginal,
|
|
PNSR_SBD SBDNew
|
|
);
|
|
|
|
BOOL
|
|
UDF_LVOL::CreateFID
|
|
(
|
|
PICBFILE IcbDirectoryParent,
|
|
PICBEXTFILE IcbFile,
|
|
PCWSTR FileName,
|
|
PNSR_FID* NewNsrFID,
|
|
ULONG StartLbn,
|
|
USHORT StartPartition,
|
|
ULONG Length
|
|
);
|
|
|
|
BOOL
|
|
FindAvailableFID
|
|
(
|
|
PICBFILE IcbFileEntry,
|
|
ULONG RequestedFIDSize
|
|
);
|
|
|
|
BOOL
|
|
FindAvailableSector
|
|
(
|
|
PNSR_SBD SBDOriginal,
|
|
PNSR_SBD SBDNew,
|
|
PULONG SectorAvailable
|
|
);
|
|
|
|
BOOL
|
|
CreateICBFileEntry
|
|
(
|
|
PICBEXTFILE* ICBCheckFile,
|
|
ULONG StartSector,
|
|
ULONG EndSector,
|
|
PNSR_SBD SBDOriginal,
|
|
PNSR_SBD SBDNew
|
|
);
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
PMESSAGE _Message;
|
|
|
|
PUDF_SA _UdfSA;
|
|
PNSR_LVOL _LogicalVolumeDescriptor;
|
|
PNSR_PART _PartitionDescriptor;
|
|
|
|
PNSR_FSD _FileSetDescriptor;
|
|
PICBFILE _RootIcbFileEntry;
|
|
|
|
PNSR_INTEG _LogicalVolumeIntegrityDescriptor;
|
|
|
|
PNSR_SBD _SpaceBitmapDescriptor;
|
|
PNSR_SBD _NewSpaceBitmapDescriptor;
|
|
};
|
|
|