NT4/private/utils/uhpfs/inc/dircache.hxx
2020-09-30 17:12:29 +02:00

170 lines
1.8 KiB
C++

/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
dircache.hxx
Abstract:
Definitions for the HPFS DIRBLK cache object
Author:
Bill McJohn (billmc) 16-Jan-1989
Notes:
The DIRBLK cache is used by the Directory Tree object.
--*/
#if ! defined(DIRBLK_CACHE_DEFN)
#define DIRBLK_CACHE_DEFN
#include "dirblk.hxx"
//
// Forward references
//
DECLARE_CLASS( DIRBLK_CACHE_ELEMENT );
DECLARE_CLASS( DIRBLK_CACHE );
DECLARE_CLASS( HOTFIXLIST );
DECLARE_CLASS( LOG_IO_DP_DRIVE );
ULONG const DirblkCacheSize = 64;
class DIRBLK_CACHE_ELEMENT : public OBJECT {
public:
DECLARE_CONSTRUCTOR( DIRBLK_CACHE_ELEMENT );
VIRTUAL
~DIRBLK_CACHE_ELEMENT(
);
NONVIRTUAL
BOOLEAN
Initialize(
PLOG_IO_DP_DRIVE Drive,
PHOTFIXLIST HotfixList
);
NONVIRTUAL
BOOLEAN
Read(
LBN DirblkLbn,
BOOLEAN OmitRead
);
NONVIRTUAL
BOOLEAN
Flush(
);
NONVIRTUAL
LBN
QueryLbn(
);
NONVIRTUAL
PDIRBLK
GetDirblk(
);
NONVIRTUAL
VOID
Hold(
);
NONVIRTUAL
VOID
Unhold(
);
NONVIRTUAL
BOOLEAN
IsFree(
);
NONVIRTUAL
VOID
MarkModified(
);
private:
NONVIRTUAL
VOID
Construct (
);
NONVIRTUAL
VOID
Destroy(
);
BOOLEAN _IsUnused;
DIRBLK _Dirblk;
ULONG _HoldCount;
};
class DIRBLK_CACHE : public OBJECT {
public:
DECLARE_CONSTRUCTOR( DIRBLK_CACHE );
VIRTUAL
~DIRBLK_CACHE(
);
NONVIRTUAL
BOOLEAN
Initialize(
PLOG_IO_DP_DRIVE Drive,
PHOTFIXLIST HotfixList
);
NONVIRTUAL
BOOLEAN
Flush(
);
NONVIRTUAL
PDIRBLK_CACHE_ELEMENT
GetCachedDirblk(
LBN DirblkLbn,
BOOLEAN OmitRead = FALSE
);
NONVIRTUAL
GetDrive(
);
private:
NONVIRTUAL
VOID
Construct (
);
NONVIRTUAL
VOID
Destroy(
);
ULONG _NextVictim;
DIRBLK_CACHE_ELEMENT _Cache[DirblkCacheSize];
};
#endif