281 lines
4.0 KiB
C++
281 lines
4.0 KiB
C++
/*++
|
|
|
|
Copyright (c) 1990 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
hpfsvol.hxx
|
|
|
|
Abstract:
|
|
|
|
The class HPFS_VOL implements HPFS only volume items.
|
|
|
|
Author:
|
|
|
|
Norbert P. Kusters (norbertk) 5-Sept-90
|
|
|
|
--*/
|
|
|
|
#if !defined (HPFS_VOL_DEFN)
|
|
|
|
#define HPFS_VOL_DEFN
|
|
|
|
#if ! defined( _SETUP_LOADER_ )
|
|
|
|
#include "volume.hxx"
|
|
#include "hpfssa.hxx"
|
|
|
|
//
|
|
// Forward references
|
|
//
|
|
|
|
DECLARE_CLASS( HPFS_VOL );
|
|
DECLARE_CLASS( MESSAGE );
|
|
|
|
|
|
class HPFS_VOL : public VOL_LIODPDRV {
|
|
|
|
public:
|
|
|
|
UHPFS_EXPORT
|
|
DECLARE_CONSTRUCTOR( HPFS_VOL );
|
|
|
|
UHPFS_EXPORT
|
|
VIRTUAL
|
|
~HPFS_VOL(
|
|
);
|
|
|
|
UHPFS_EXPORT
|
|
NONVIRTUAL
|
|
BOOLEAN
|
|
Initialize(
|
|
IN PCWSTRING NtDriveName,
|
|
IN OUT PMESSAGE Message DEFAULT NULL,
|
|
IN BOOLEAN ExclusiveWrite DEFAULT FALSE,
|
|
IN BOOLEAN FormatMedia DEFAULT FALSE,
|
|
IN MEDIA_TYPE MediaType DEFAULT Unknown
|
|
);
|
|
|
|
VIRTUAL
|
|
ULONG
|
|
QuerySectorSize(
|
|
) CONST;
|
|
|
|
VIRTUAL
|
|
BIG_INT
|
|
QuerySectors(
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
PVOL_LIODPDRV
|
|
QueryDupVolume(
|
|
IN PCWSTRING NtDriveName,
|
|
IN OUT PMESSAGE Message DEFAULT NULL,
|
|
IN BOOLEAN ExclusiveWrite DEFAULT FALSE,
|
|
IN BOOLEAN FormatMedia DEFAULT FALSE,
|
|
IN MEDIA_TYPE MediaType DEFAULT Unknown
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
PHPFS_SA
|
|
GetHPFSSuperArea(
|
|
);
|
|
|
|
private:
|
|
|
|
NONVIRTUAL
|
|
VOID
|
|
Construct(
|
|
);
|
|
|
|
NONVIRTUAL
|
|
VOID
|
|
Destroy(
|
|
);
|
|
|
|
HPFS_SA _hpfssa;
|
|
|
|
};
|
|
|
|
|
|
INLINE
|
|
PHPFS_SA
|
|
HPFS_VOL::GetHPFSSuperArea(
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
get the superarea for an HPFS_VOL.
|
|
|
|
Arguments:
|
|
|
|
None.
|
|
|
|
Return Value:
|
|
|
|
pointer to superarea
|
|
|
|
--*/
|
|
{
|
|
return &_hpfssa;
|
|
}
|
|
|
|
#else // _SETUP_LOADER_ is defined
|
|
|
|
#include "volume.hxx"
|
|
#include "hpfssa.hxx"
|
|
#include "dircache.hxx"
|
|
|
|
//
|
|
// Forward references
|
|
//
|
|
|
|
DECLARE_CLASS( HPFS_VOL );
|
|
DECLARE_CLASS( MESSAGE );
|
|
|
|
|
|
class HPFS_VOL : public VOL_LIODPDRV {
|
|
|
|
public:
|
|
|
|
DECLARE_CONSTRUCTOR( HPFS_VOL );
|
|
|
|
VIRTUAL
|
|
~HPFS_VOL(
|
|
);
|
|
|
|
NONVIRTUAL
|
|
BOOLEAN
|
|
Initialize(
|
|
IN ULONG DeviceHandle
|
|
);
|
|
|
|
NONVIRTUAL
|
|
PVOL_LIODPDRV
|
|
QueryDupVolume(
|
|
IN PCWSTRING NtDriveName,
|
|
IN OUT PMESSAGE Message DEFAULT NULL,
|
|
IN BOOLEAN ExclusiveWrite DEFAULT FALSE,
|
|
IN BOOLEAN FormatMedia DEFAULT FALSE,
|
|
IN MEDIA_TYPE MediaType DEFAULT Unknown
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
PHPFS_SA
|
|
GetHPFSSuperArea(
|
|
);
|
|
|
|
NONVIRTUAL
|
|
PDIRBLK_CACHE
|
|
GetDirblkCache(
|
|
);
|
|
|
|
VIRTUAL
|
|
BOOLEAN
|
|
IsHpfs(
|
|
);
|
|
|
|
VIRTUAL
|
|
ARC_STATUS
|
|
MarkDirty(
|
|
);
|
|
|
|
VIRTUAL
|
|
ARC_STATUS
|
|
Flush(
|
|
IN BOOLEAN JustHandle
|
|
);
|
|
|
|
private:
|
|
|
|
NONVIRTUAL
|
|
VOID
|
|
Construct(
|
|
);
|
|
|
|
NONVIRTUAL
|
|
VOID
|
|
Destroy(
|
|
);
|
|
|
|
HPFS_SA _hpfssa;
|
|
DIRBLK_CACHE _dirblk_cache;
|
|
BOOLEAN _IsDirty;
|
|
BOOLEAN _MountedDirty;
|
|
};
|
|
|
|
|
|
INLINE
|
|
PHPFS_SA
|
|
HPFS_VOL::GetHPFSSuperArea(
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
get the superarea for an HPFS_VOL.
|
|
|
|
Arguments:
|
|
|
|
None.
|
|
|
|
Return Value:
|
|
|
|
pointer to superarea
|
|
|
|
--*/
|
|
{
|
|
return &_hpfssa;
|
|
}
|
|
|
|
INLINE
|
|
PDIRBLK_CACHE
|
|
HPFS_VOL::GetDirblkCache(
|
|
)
|
|
/*++
|
|
|
|
Return Value:
|
|
|
|
This method fetches the dirblk cache associated with this volume.
|
|
|
|
Arguments:
|
|
|
|
None.
|
|
|
|
Return Value:
|
|
|
|
The volume's dirblk cache.
|
|
|
|
--*/
|
|
{
|
|
return &_dirblk_cache;
|
|
}
|
|
|
|
INLINE
|
|
BOOLEAN
|
|
HPFS_VOL::IsHpfs(
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This method determines whether the volume is HPFS.
|
|
|
|
Arguments:
|
|
|
|
None.
|
|
|
|
Return Value:
|
|
|
|
TRUE if this volume is an HPFS volume (which, of course, it is).
|
|
|
|
--*/
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif // HPFS_VOL_DEFN
|