fstream.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 1k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #pragma once
  2. class CFileStream : public IStream
  3. {
  4. public:
  5.     // *** IUnknown methods ***
  6.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppvObj);
  7.     STDMETHOD_(ULONG,AddRef) (THIS);
  8.     STDMETHOD_(ULONG,Release) (THIS);
  9.     // *** IStream methods ***
  10.     STDMETHOD(Read) (THIS_ VOID *pv, ULONG cb, ULONG *pcbRead);
  11.     STDMETHOD(Write) (THIS_ VOID const *pv, ULONG cb, ULONG *pcbWritten);
  12.     STDMETHOD(Seek) (THIS_ LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition);
  13.     STDMETHOD(SetSize) (THIS_ ULARGE_INTEGER libNewSize);
  14.     STDMETHOD(CopyTo) (THIS_ IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten);
  15.     STDMETHOD(Commit) (THIS_ DWORD grfCommitFlags);
  16.     STDMETHOD(Revert) (THIS);
  17.     STDMETHOD(LockRegion) (THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType);
  18.     STDMETHOD(UnlockRegion) (THIS_ ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType);
  19.     STDMETHOD(Stat) (THIS_ STATSTG *pstatstg, DWORD grfStatFlag);
  20.     STDMETHOD(Clone)(THIS_ IStream **ppstm);
  21. public:
  22.     CFileStream(HANDLE hf, DWORD grfMode);
  23.     ~CFileStream();
  24. private:
  25.     LONG        cRef;           // Reference count
  26.     HANDLE      hFile;          // the file.
  27.     BOOL        fWrite;         // TRUE if writing.
  28.     ULONG       ib;
  29.     ULONG       cbBufLen;       // length of buffer if reading
  30.     BYTE        ab[4096];       // buffer
  31. };