|
|
// FSStg.cpp -- Implementation for the FileSystemStorage class
#include "stdafx.h"
HRESULT STDMETHODCALLTYPE CFileSystemStorage::Create (IUnknown *punkOuter, REFIID riid, PPVOID ppv) { if (punkOuter && riid != IID_IUnknown) return CLASS_E_NOAGGREGATION; CFileSystemStorage *pFSStg = New CFileSystemStorage(punkOuter);
if (!pFSStg) return STG_E_INSUFFICIENTMEMORY;
HRESULT hr = pFSStg->m_ImpIFileSystemStorage.Init();
if (hr == S_OK) hr = pFSStg->QueryInterface(riid, ppv);
if (hr != S_OK) delete pFSStg;
return hr; }
// Initialing routines:
HRESULT STDMETHODCALLTYPE CFileSystemStorage::CImpIFileSystemStorage::Init() { return NO_ERROR; }
// IFSStorage methods
HRESULT STDMETHODCALLTYPE CFileSystemStorage::CImpIFileSystemStorage::FSCreateStorage (const WCHAR * pwcsName, DWORD grfMode, IStorage ** ppstgOpen) { return CFSStorage::CreateStorage(NULL, pwcsName, grfMode, ppstgOpen); }
HRESULT STDMETHODCALLTYPE CFileSystemStorage::CImpIFileSystemStorage::FSOpenStorage (const WCHAR * pwcsName, DWORD grfMode, IStorage ** ppstgOpen) { return CFSStorage:: OpenStorage(NULL, pwcsName, grfMode, ppstgOpen); }
HRESULT STDMETHODCALLTYPE CFileSystemStorage::CImpIFileSystemStorage::FSCreateStream (const WCHAR *pwcsName, DWORD grfMode, IStream **ppStrm) { ILockBytes *pLKB = NULL;
HRESULT hr = CFSLockBytes::Create(NULL, pwcsName, grfMode, &pLKB);
if (hr == S_OK) { hr = CStream::OpenStream(NULL, pLKB, grfMode, (IStreamITEx **) ppStrm);
if (hr != S_OK) pLKB->Release(); }
return hr; }
HRESULT STDMETHODCALLTYPE CFileSystemStorage::CImpIFileSystemStorage ::FSCreateTemporaryStream(IStream **ppStrm) { ILockBytes *pLKB = NULL;
HRESULT hr = CFSLockBytes::CreateTemp(NULL, &pLKB);
if (hr == S_OK) { hr = CStream::OpenStream(NULL, pLKB, STGM_READWRITE, (IStreamITEx **) ppStrm);
if (hr != S_OK) pLKB->Release(); }
return hr; }
HRESULT STDMETHODCALLTYPE CFileSystemStorage::CImpIFileSystemStorage::FSOpenStream (const WCHAR *pwcsName, DWORD grfMode, IStream **ppStrm) { ILockBytes *pLKB = NULL;
HRESULT hr = CFSLockBytes::Open(NULL, pwcsName, grfMode, &pLKB);
if (hr == S_OK) { hr = CStream::OpenStream(NULL, pLKB, grfMode, (IStreamITEx **) ppStrm);
if (hr != S_OK) pLKB->Release(); }
return hr; }
HRESULT STDMETHODCALLTYPE CFileSystemStorage::CImpIFileSystemStorage::FSCreateLockBytes (const WCHAR *pwcsName, DWORD grfMode, ILockBytes **ppLkb) { return CFSLockBytes::Create(NULL, pwcsName, grfMode, ppLkb); }
HRESULT STDMETHODCALLTYPE CFileSystemStorage::CImpIFileSystemStorage ::FSCreateTemporaryLockBytes(ILockBytes **ppLkb) { return CFSLockBytes::CreateTemp(NULL, ppLkb); }
HRESULT STDMETHODCALLTYPE CFileSystemStorage::CImpIFileSystemStorage::FSOpenLockBytes (const WCHAR *pwcsName, DWORD grfMode, ILockBytes **ppLkb) { return CFSLockBytes::Open(NULL, pwcsName, grfMode, ppLkb); }
HRESULT STDMETHODCALLTYPE CFileSystemStorage::CImpIFileSystemStorage::FSStgSetTimes (WCHAR const * lpszName, FILETIME const * pctime, FILETIME const * patime, FILETIME const * pmtime ) { RonM_ASSERT(FALSE);
return E_NOTIMPL; }
|