windows-nt/Source/XPSP1/NT/enduser/stuff/itss/warehse.cpp
2020-09-26 16:20:57 +08:00

148 lines
4.4 KiB
C++

// Warehse.cpp -- Implementation for the class CWarehouse
#include "stdafx.h"
CWarehouse::CImpIWarehouse::CImpIWarehouse(CWarehouse *pBackObj, IUnknown *punkOuter)
: IITITStorageEx(pBackObj, punkOuter)
{
m_pITSCD = NULL;
}
CWarehouse::CImpIWarehouse::~CImpIWarehouse(void)
{
if (m_pITSCD)
delete [] (DWORD *) m_pITSCD;
}
HRESULT STDMETHODCALLTYPE CWarehouse::Create
(IUnknown *punkOuter, REFIID riid, PPVOID ppv)
{
if (punkOuter && riid != IID_IUnknown)
return CLASS_E_NOAGGREGATION;
CWarehouse *pWarehouse = New CWarehouse(punkOuter);
if (!pWarehouse)
return STG_E_INSUFFICIENTMEMORY;
HRESULT hr = pWarehouse->m_ImpIWarehouse.Init();
if (hr == S_OK)
hr = pWarehouse->QueryInterface(riid, ppv);
if (hr != S_OK)
delete pWarehouse;
return hr;
}
STDMETHODIMP CWarehouse::CImpIWarehouse::StgCreateDocfile
(const WCHAR * pwcsName, DWORD grfMode,
DWORD reserved, IStorage ** ppstgOpen
)
{
return CITFileSystem::CreateITFileSystem
(NULL, pwcsName, grfMode, m_pITSCD, GetUserDefaultLCID(), ppstgOpen);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::StgCreateDocfileOnILockBytes
(ILockBytes * plkbyt, DWORD grfMode,
DWORD reserved, IStorage ** ppstgOpen
)
{
return CITFileSystem::CreateITFSOnLockBytes
(NULL, plkbyt, grfMode, m_pITSCD, GetUserDefaultLCID(), ppstgOpen);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::StgCreateDocfileForLocale
(const WCHAR * pwcsName, DWORD grfMode, DWORD reserved, LCID lcid, IStorage ** ppstgOpen)
{
return CITFileSystem::CreateITFileSystem
(NULL, pwcsName, grfMode, m_pITSCD, lcid, ppstgOpen);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::StgCreateDocfileForLocaleOnILockBytes
(ILockBytes * plkbyt, DWORD grfMode, DWORD reserved, LCID lcid, IStorage ** ppstgOpen)
{
return CITFileSystem::CreateITFSOnLockBytes
(NULL, plkbyt, grfMode, m_pITSCD, lcid, ppstgOpen);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::QueryFileStampAndLocale
(const WCHAR *pwcsName, DWORD *pFileStamp, DWORD *pFileLocale)
{
return CITFileSystem::QueryFileStampAndLocale(pwcsName, pFileStamp, pFileLocale);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::QueryLockByteStampAndLocale
(ILockBytes * plkbyt, DWORD *pFileStamp, DWORD *pFileLocale)
{
return CITFileSystem::QueryLockByteStampAndLocale(plkbyt, pFileStamp, pFileLocale);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::StgIsStorageFile(const WCHAR * pwcsName)
{
return CITFileSystem::IsITFile(pwcsName);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::StgIsStorageILockBytes(ILockBytes * plkbyt)
{
return CITFileSystem::IsITLockBytes(plkbyt);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::StgOpenStorage
(const WCHAR * pwcsName, IStorage * pstgPriority,
DWORD grfMode, SNB snbExclude, DWORD reserved,
IStorage ** ppstgOpen
)
{
return CITFileSystem::OpenITFileSystem(NULL, pwcsName, grfMode, (IStorageITEx **)ppstgOpen);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::StgOpenStorageOnILockBytes
(ILockBytes * plkbyt, IStorage * pStgPriority,
DWORD grfMode, SNB snbExclude, DWORD reserved,
IStorage ** ppstgOpen
)
{
return CITFileSystem::OpenITFSOnLockBytes(NULL, plkbyt, grfMode, (IStorageITEx **)ppstgOpen);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::StgSetTimes
(WCHAR const * lpszName, FILETIME const * pctime,
FILETIME const * patime, FILETIME const * pmtime
)
{
return CITFileSystem::SetITFSTimes(lpszName, pctime, patime, pmtime);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::SetControlData(PITS_Control_Data pControlData)
{
UINT cdw = pControlData->cdwControlData + 1;
ITS_Control_Data *pITSCD = (ITS_Control_Data *) New DWORD[cdw];
if (!pITSCD)
return STG_E_INSUFFICIENTMEMORY;
CopyMemory(pITSCD, pControlData, cdw * sizeof(DWORD));
if (m_pITSCD)
delete [] (DWORD *) m_pITSCD;
m_pITSCD = pITSCD;
return NO_ERROR;
}
STDMETHODIMP CWarehouse::CImpIWarehouse::DefaultControlData(PITS_Control_Data *ppControlData)
{
return CITFileSystem::DefaultControlData(ppControlData);
}
STDMETHODIMP CWarehouse::CImpIWarehouse::Compact(const WCHAR * pwcsName, ECompactionLev iLev)
{
return CITFileSystem::Compact(pwcsName, iLev);
}