170 lines
1.8 KiB
C++
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
|