163 lines
2.7 KiB
C++
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_
|