summaryrefslogtreecommitdiff
path: root/src/inc/fstream.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/inc/fstream.h')
-rw-r--r--src/inc/fstream.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/inc/fstream.h b/src/inc/fstream.h
new file mode 100644
index 0000000000..aa81ec8cfd
--- /dev/null
+++ b/src/inc/fstream.h
@@ -0,0 +1,50 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+
+#ifndef __FSTREAM_H_INCLUDED__
+#define __FSTREAM_H_INCLUDED__
+
+#include <objidl.h>
+
+class CFileStream : public IStream
+{
+ public:
+ CFileStream();
+ virtual ~CFileStream();
+
+ HRESULT OpenForRead(LPCWSTR wzFilePath);
+ HRESULT OpenForWrite(LPCWSTR wzFilePath);
+
+ // IUnknown methods:
+ STDMETHODIMP_(ULONG) AddRef();
+ STDMETHODIMP_(ULONG) Release();
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObj);
+
+ // ISequentialStream methods:
+ STDMETHODIMP Read(void *pv, ULONG cb, ULONG *pcbRead);
+ STDMETHODIMP Write(void const *pv, ULONG cb, ULONG *pcbWritten);
+
+ // IStream methods:
+ STDMETHODIMP Seek(LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition);
+ STDMETHODIMP SetSize(ULARGE_INTEGER libNewSize);
+ STDMETHODIMP CopyTo(IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten);
+ STDMETHODIMP Commit(DWORD grfCommitFlags);
+ STDMETHODIMP Revert();
+ STDMETHODIMP LockRegion(ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType);
+ STDMETHODIMP UnlockRegion(ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType);
+ STDMETHODIMP Stat(STATSTG *pstatstg, DWORD grfStatFlag);
+ STDMETHODIMP Clone(IStream **ppIStream);
+
+ private:
+ BOOL Close();
+
+ private:
+ LONG _cRef;
+ HANDLE _hFile;
+
+};
+
+#endif
+