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;
|
||
|
};
|
||
|
|