|
|
/*++
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; };
|