Garmin Fleet Management Controller  2.19.0
FileStream.h
Go to the documentation of this file.
1 /*********************************************************************
2 *
3 * HEADER NAME:
4 * FileStream.h
5 *
6 * Copied from http://msdn.microsoft.com/en-us/library/windows/desktop/ms752876(v=vs.85).aspx
7 *---------------------------------------------------------------------
8 * $NoKeywords$
9 *********************************************************************/
10 #pragma once
11 #include "stdafx.h"
12 
13 //----------------------------------------------------------------------
17 //----------------------------------------------------------------------
18 class FileStream :
19  public IStream
20  {
21  public:
22  FileStream(HANDLE hFile);
23  virtual ~FileStream(void);
24 
25  HRESULT static OpenFile(LPCWSTR pName, IStream ** ppStream, bool fWrite);
26  virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void ** ppvObject);
27  virtual ULONG STDMETHODCALLTYPE AddRef(void);
28  virtual ULONG STDMETHODCALLTYPE Release(void);
29 
30  // ISequentialStream Interface
31  public:
32  virtual HRESULT STDMETHODCALLTYPE Read(void* pv, ULONG cb, ULONG* pcbRead);
33  virtual HRESULT STDMETHODCALLTYPE Write(void const* pv, ULONG cb, ULONG* pcbWritten);
34 
35  // IStream Interface
36  public:
37  virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER) { return E_NOTIMPL; }
38  virtual HRESULT STDMETHODCALLTYPE CopyTo(IStream*, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*) { return E_NOTIMPL; }
39  virtual HRESULT STDMETHODCALLTYPE Commit(DWORD) { return E_NOTIMPL; }
40  virtual HRESULT STDMETHODCALLTYPE Revert(void) { return E_NOTIMPL; }
41  virtual HRESULT STDMETHODCALLTYPE LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD) { return E_NOTIMPL; }
42  virtual HRESULT STDMETHODCALLTYPE UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD) { return E_NOTIMPL; }
43  virtual HRESULT STDMETHODCALLTYPE Clone(IStream **) { return E_NOTIMPL; }
44 
45  virtual HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER liDistanceToMove, DWORD dwOrigin, ULARGE_INTEGER* lpNewFilePointer);
46 
47  virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg, DWORD grfStatFlag);
48 
49  private:
50  HANDLE _hFile;
51  LONG _refcount;
52  };
virtual ULONG STDMETHODCALLTYPE Release(void)
Definition: FileStream.cpp:66
virtual HRESULT STDMETHODCALLTYPE Read(void *pv, ULONG cb, ULONG *pcbRead)
Definition: FileStream.cpp:74
virtual HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER liDistanceToMove, DWORD dwOrigin, ULARGE_INTEGER *lpNewFilePointer)
Definition: FileStream.cpp:86
virtual HRESULT STDMETHODCALLTYPE Revert(void)
Definition: FileStream.h:40
virtual HRESULT STDMETHODCALLTYPE Write(void const *pv, ULONG cb, ULONG *pcbWritten)
Definition: FileStream.cpp:80
virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER)
Definition: FileStream.h:37
HANDLE _hFile
Definition: FileStream.h:50
virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG *pStatstg, DWORD grfStatFlag)
Definition: FileStream.cpp:113
virtual HRESULT STDMETHODCALLTYPE Commit(DWORD)
Definition: FileStream.h:39
virtual HRESULT STDMETHODCALLTYPE CopyTo(IStream *, ULARGE_INTEGER, ULARGE_INTEGER *, ULARGE_INTEGER *)
Definition: FileStream.h:38
File-based implementation of IStream interface.
Definition: FileStream.h:18
virtual ULONG STDMETHODCALLTYPE AddRef(void)
Definition: FileStream.cpp:61
virtual HRESULT STDMETHODCALLTYPE Clone(IStream **)
Definition: FileStream.h:43
virtual ~FileStream(void)
Definition: FileStream.cpp:24
virtual HRESULT STDMETHODCALLTYPE UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD)
Definition: FileStream.h:42
LONG _refcount
Definition: FileStream.h:51
static HRESULT OpenFile(LPCWSTR pName, IStream **ppStream, bool fWrite)
Definition: FileStream.cpp:32
virtual HRESULT STDMETHODCALLTYPE LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD)
Definition: FileStream.h:41
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void **ppvObject)
Definition: FileStream.cpp:48
FileStream(HANDLE hFile)
File-based implementation of IStream interface.
Definition: FileStream.cpp:18