windows-nt/Source/XPSP1/NT/base/fs/utils/untfs/inc/badfile.hxx
2020-09-26 16:20:57 +08:00

130 lines
2.9 KiB
C++

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
badfile.hxx
Abstract:
This module contains the declarations for the NTFS_BAD_CLUSTER_FILE
class, which models the bad cluster file for an NTFS volume.
The DATA attribute of the bad cluster file is a non-resident
attribute to which bad clusters are allocated. It is stored
as a sparse file with LCN = VCN.
Author:
Bill McJohn (billmc) 18-June-91
Environment:
ULIB, User Mode
--*/
#if !defined( NTFS_BAD_CLUSTER_FILE_DEFN )
#define NTFS_BAD_CLUSTER_FILE_DEFN
#include "frs.hxx"
DECLARE_CLASS( IO_DP_DRIVE );
DECLARE_CLASS( NTFS_ATTRIBUTE);
DECLARE_CLASS( NTFS_MASTER_FILE_TABLE );
DECLARE_CLASS( NTFS_BITMAP );
DECLARE_CLASS( NUMBER_SET );
class NTFS_BAD_CLUSTER_FILE : public NTFS_FILE_RECORD_SEGMENT {
public:
UNTFS_EXPORT
DECLARE_CONSTRUCTOR( NTFS_BAD_CLUSTER_FILE );
UNTFS_EXPORT
VIRTUAL
~NTFS_BAD_CLUSTER_FILE(
);
UNTFS_EXPORT
NONVIRTUAL
BOOLEAN
Initialize(
IN OUT PNTFS_MASTER_FILE_TABLE Mft
);
NONVIRTUAL
BOOLEAN
Create(
IN PCSTANDARD_INFORMATION StandardInformation,
IN OUT PNTFS_BITMAP Bitmap,
IN PCNUMBER_SET BadClusters
);
NONVIRTUAL
BOOLEAN
VerifyAndFix(
IN OUT PNTFS_BITMAP VolumeBitmap,
IN OUT PNTFS_INDEX_TREE RootIndex,
OUT PBOOLEAN Changes,
IN FIX_LEVEL FixLevel,
IN OUT PMESSAGE Message
);
NONVIRTUAL
BOOLEAN
Add(
IN LCN Lcn
);
NONVIRTUAL
BOOLEAN
Add(
IN PCNUMBER_SET ClustersToAdd
);
NONVIRTUAL
BOOLEAN
AddRun(
IN LCN Lcn,
IN BIG_INT RunLength
);
NONVIRTUAL
BOOLEAN
IsInList(
IN LCN Lcn
);
NONVIRTUAL
BIG_INT
QueryNumBad(
);
NONVIRTUAL
BOOLEAN
Flush(
IN OUT PNTFS_BITMAP Bitmap,
IN OUT PNTFS_INDEX_TREE ParentIndex DEFAULT NULL
);
private:
NONVIRTUAL
VOID
Construct(
);
NONVIRTUAL
VOID
Destroy(
);
PNTFS_ATTRIBUTE _DataAttribute;
};
#endif