windows-nt/Source/XPSP1/NT/base/efiutil/efilib/inc/dcache.hxx
2020-09-26 16:20:57 +08:00

163 lines
2.7 KiB
C++

/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
dcache.hxx
Abstract:
This class models a general cache for reading and writing.
The actual implementation of this base class is to not have
any cache at all.
--*/
#if !defined(_DRIVE_CACHE_DEFN_)
#define _DRIVE_CACHE_DEFN_
#include "bigint.hxx"
#include "drive.hxx"
DECLARE_CLASS(DRIVE_CACHE);
class DRIVE_CACHE : public OBJECT {
public:
DECLARE_CONSTRUCTOR( DRIVE_CACHE );
VIRTUAL
~DRIVE_CACHE(
);
NONVIRTUAL
BOOLEAN
Initialize(
IN OUT PIO_DP_DRIVE Drive
);
VIRTUAL
BOOLEAN
Read(
IN BIG_INT StartingSector,
IN SECTORCOUNT NumberOfSectors,
OUT PVOID Buffer
);
VIRTUAL
BOOLEAN
Write(
IN BIG_INT StartingSector,
IN SECTORCOUNT NumberOfSectors,
IN PVOID Buffer
);
VIRTUAL
BOOLEAN
Flush(
);
protected:
NONVIRTUAL
BOOLEAN
HardRead(
IN BIG_INT StartingSector,
IN SECTORCOUNT NumberOfSectors,
OUT PVOID Buffer
);
NONVIRTUAL
BOOLEAN
HardWrite(
IN BIG_INT StartingSector,
IN SECTORCOUNT NumberOfSectors,
IN PVOID Buffer
);
private:
NONVIRTUAL
VOID
Construct(
);
NONVIRTUAL
VOID
Destroy(
);
PIO_DP_DRIVE _drive;
};
INLINE
BOOLEAN
DRIVE_CACHE::HardRead(
IN BIG_INT StartingSector,
IN SECTORCOUNT NumberOfSectors,
OUT PVOID Buffer
)
/*++
Routine Description:
This routine reads the requested sectors directly from the disk.
Arguments:
StartingSector - Supplies the first sector to be read.
NumberOfSectors - Supplies the number of sectors to be read.
Buffer - Supplies the buffer to read the run of sectors to.
Return Value:
FALSE - Failure.
TRUE - Success.
--*/
{
return DRIVE_CACHE::Read(StartingSector, NumberOfSectors, Buffer);
}
INLINE
BOOLEAN
DRIVE_CACHE::HardWrite(
IN BIG_INT StartingSector,
IN SECTORCOUNT NumberOfSectors,
IN PVOID Buffer
)
/*++
Routine Description:
This routine writes the requested sectors directly to the disk.
Arguments:
StartingSector - Supplies the first sector to be written.
NumberOfSectors - Supplies the number of sectors to be written.
Buffer - Supplies the buffer to write the run of sectors from.
Return Value:
FALSE - Failure.
TRUE - Success.
--*/
{
return DRIVE_CACHE::Write(StartingSector, NumberOfSectors, Buffer);
}
#endif // _DRIVE_CACHE_DEFN_