/*++ 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_