mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
4.7 KiB
174 lines
4.7 KiB
/*++
|
|
|
|
Copyright (c) 1993 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
dbfsconv.hxx
|
|
|
|
Abstract:
|
|
|
|
This module declares routines to uncompress doublespace fileystems.
|
|
|
|
Author:
|
|
|
|
Matthew Bradburn (mattbr) 24-Nov-1993
|
|
|
|
Environment:
|
|
|
|
ULIB, User Mode
|
|
|
|
--*/
|
|
|
|
#if ! defined DBFS_CONV_DEFN
|
|
#define DBFS_CONV_DEFN
|
|
|
|
#include "ulib.hxx"
|
|
#include "fatdbvol.hxx"
|
|
#include "fatdbsa.hxx"
|
|
#include "secmap.hxx"
|
|
#include "treemap.hxx"
|
|
#include "ifsentry.hxx"
|
|
|
|
|
|
typedef struct _DBFS_FILE_INFO {
|
|
BOOLEAN fIsDirectory; // is the file a directory
|
|
UCHAR bAttributes; // file attributes
|
|
ULONG uFileSize; // file size
|
|
LARGE_INTEGER liTimeStamp; // last mod time
|
|
} DBFS_FILE_INFO, *PDBFS_FILE_INFO;
|
|
|
|
class DBFS_CONV : OBJECT {
|
|
public:
|
|
DECLARE_CONSTRUCTOR(DBFS_CONV);
|
|
|
|
NONVIRTUAL
|
|
BOOLEAN
|
|
Initialize(
|
|
IN PCWSTRING NtDriveName,
|
|
IN PCWSTRING HostFileName,
|
|
IN OUT PMESSAGE Message
|
|
);
|
|
|
|
NONVIRTUAL
|
|
BOOLEAN
|
|
Convert(
|
|
IN OUT PMESSAGE Message,
|
|
IN BOOLEAN Verbose,
|
|
OUT PCONVERT_STATUS Status
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
CheckFreeSpace(
|
|
IN OUT PMESSAGE Message,
|
|
IN BOOLEAN HostIsCompressed,
|
|
IN BOOLEAN Verbose,
|
|
IN BOOLEAN WillConvertHost
|
|
);
|
|
|
|
|
|
private:
|
|
|
|
PFATDB_VOL _fatdbvol;
|
|
PFATDB_SA _fatdbsa;
|
|
PFAT _fat;
|
|
SECTOR_MAP _secmap;
|
|
TREE_MAP _parent_map;
|
|
ULONG _host_sector_size;
|
|
ULONG _new_host_sec_clus;
|
|
ULONG _host_sec_clus;
|
|
PCWSTRING _cvf_name;
|
|
DSTRING _win_destdrive;
|
|
PUCHAR _buf; // decompression workspace
|
|
|
|
NONVIRTUAL VOID
|
|
Construct();
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
MapSectorsAndTakeCensus(
|
|
IN OUT PMESSAGE Message,
|
|
OUT PCENSUS_REPORT Census
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
CreateHostDirectoryStructure(
|
|
IN OUT PMESSAGE Message,
|
|
IN OUT PCONVERT_STATUS Status
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
ExtractCompressedFiles(
|
|
IN OUT PMESSAGE Message,
|
|
IN BOOLEAN Verbose,
|
|
IN PCENSUS_REPORT Census,
|
|
OUT PCONVERT_STATUS Status
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
DeleteCvf(
|
|
IN OUT PMESSAGE Message
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
CopyClusterChainToFile(
|
|
IN OUT PMESSAGE Message,
|
|
IN BOOLEAN Verbose,
|
|
IN USHORT StartingCluster,
|
|
IN PWSTRING FilePath,
|
|
IN PDBFS_FILE_INFO FileInfo,
|
|
OUT PCONVERT_STATUS Status
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
EraseFile(
|
|
IN OUT PMESSAGE Message,
|
|
IN USHORT FirstCluster
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
FindPathFromStartingCluster(
|
|
IN OUT PMESSAGE Message,
|
|
IN USHORT StartingCluster,
|
|
OUT PWSTRING Path,
|
|
OUT PDBFS_FILE_INFO FileInfo
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
RelocateClusterChain(
|
|
IN OUT PMESSAGE Message,
|
|
IN BOOLEAN Verbose,
|
|
IN USHORT Cluster,
|
|
IN ULONG LastUsedSector,
|
|
IN OUT PCENSUS_REPORT Census,
|
|
OUT PCONVERT_STATUS Status
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
MapClusterChainSectors(
|
|
IN USHORT Cluster
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
FindAndUncompressFile(
|
|
IN OUT PMESSAGE Message,
|
|
IN BOOLEAN Verbose,
|
|
OUT PCONVERT_STATUS Status
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
ReplaceClusterInChain(
|
|
IN USHORT ClusterChain,
|
|
IN USHORT Cluster,
|
|
IN USHORT NewCluster,
|
|
IN USHORT ParentDir,
|
|
OUT PUSHORT NewChainHead
|
|
);
|
|
|
|
NONVIRTUAL BOOLEAN
|
|
WriteDir(
|
|
IN PFATDIR Dir,
|
|
IN USHORT StartingCluster
|
|
);
|
|
};
|
|
|
|
#endif // DBFS_CONV_DEFN
|