|
|
/*++
� 1998 Seagate Software, Inc. All rights reserved.
Module Name:
fsarcvy.cpp
Abstract:
Defines the functions for the recovery record class.
Author:
Ron White [ronw] 8-Sep-1997
Revision History:
Steve Wimmer [stevew] 30-July-1998 - updated CFsaRecoveryRec::GetClassId's WsbTraceOut to hold the proper function name
--*/
#include "stdafx.h"
#include "wsb.h"
#include "fsarcvy.h"
#define WSB_TRACE_IS WSB_TRACE_BIT_FSA
HRESULT CFsaRecoveryRec::GetBagId( OUT GUID* pId ) /*++
Implements:
IFsaRecoveryRec::GetBagId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::GetBagId"),OLESTR(""));
try { WsbAssert(0 != pId, E_POINTER);
*pId = m_BagId; } WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::GetBagId"), OLESTR("hr = <%ls> Id = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pId));
return(hr); }
HRESULT CFsaRecoveryRec::GetBagOffset( OUT LONGLONG* pOffset ) /*++
Implements:
IFsaRecoveryRec::GetBagOffset
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::GetBagOffset"),OLESTR(""));
try { WsbAssert(0 != pOffset, E_POINTER); *pOffset = m_BagOffset; } WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::GetBagOffset"), OLESTR("hr = <%ls> Offset = <%ls>"), WsbHrAsString(hr), WsbLonglongAsString(*pOffset));
return(hr); }
HRESULT CFsaRecoveryRec::GetFileId( OUT LONGLONG* pFileId ) /*++
Implements:
IFsaRecoveryRec::GetFileId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::GetFileId"),OLESTR(""));
try { WsbAssert(0 != pFileId, E_POINTER); *pFileId = m_FileId; } WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::GetFileId"), OLESTR("hr = <%ls> Size = <%ls>"), WsbHrAsString( hr ), WsbLonglongAsString( *pFileId ) );
return(hr); }
HRESULT CFsaRecoveryRec::GetOffsetSize( OUT LONGLONG* pOffset, OUT LONGLONG* pSize ) /*++
Implements:
IFsaRecoveryRec::GetOffsetSize
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::GetOffsetSize"),OLESTR(""));
try { WsbAssertPointer(pOffset); WsbAssertPointer(pSize); *pOffset = m_Offset; *pSize = m_Size; } WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::GetOffsetSize"), OLESTR("hr = <%ls> Offset = %I64d, Size = %I64d"), WsbHrAsString(hr), *pOffset, *pSize);
return(hr); }
HRESULT CFsaRecoveryRec::GetPath( OUT OLECHAR** ppPath, IN ULONG bufferSize ) /*++
Implements:
IFsaRecoveryRec::GetPath
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::GetPath"),OLESTR(""));
try { WsbAssert(0 != ppPath, E_POINTER); WsbAffirmHr(m_Path.CopyTo(ppPath, bufferSize)); WsbTrace( OLESTR("CFsaRecoveryRec::GetPath path = <%ls>\n"), *ppPath ); } WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::GetPath"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::GetRecoveryCount( OUT LONG* pRecoveryCount ) /*++
Implements:
IFsaRecoveryRec::GetRecoveryCount
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::GetRecoveryCount"),OLESTR(""));
try { WsbAssertPointer(pRecoveryCount); *pRecoveryCount = m_RecoveryCount; } WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::GetRecoveryCount"), OLESTR("hr = <%ls> RecoveryCount = %ld"), WsbHrAsString(hr), *pRecoveryCount);
return(hr); }
HRESULT CFsaRecoveryRec::GetStatus( OUT ULONG* pStatus ) /*++
Implements:
IFsaRecoveryRec::GetStatus
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::GetStatus"),OLESTR(""));
try { WsbAssertPointer(pStatus); *pStatus = m_Status; } WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::GetStatus"), OLESTR("hr = <%ls> Status = %lx"), WsbHrAsString(hr), *pStatus);
return(hr); }
HRESULT CFsaRecoveryRec::FinalConstruct( void ) /*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK;
try {
WsbAssertHr(CWsbDbEntity::FinalConstruct());
m_BagId = GUID_NULL; m_BagOffset = 0; m_FileId = 0; m_Offset = 0; m_RecoveryCount = 0; m_Size = 0; m_Status = 0;
} WsbCatch(hr);
return(hr); }
HRESULT CFsaRecoveryRec::FinalRelease( void ) /*++
Implements:
CComObjectRoot::FinalRelease
--*/ { HRESULT hr = S_OK;
CWsbDbEntity::FinalRelease();
return(hr); }
HRESULT CFsaRecoveryRec::GetClassID ( OUT LPCLSID pclsid ) /*++
Implements:
IPerist::GetClassID
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::GetClassID"), OLESTR(""));
try { WsbAssertPointer(pclsid); *pclsid = CLSID_CFsaRecoveryRec;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pclsid)); return(hr); }
HRESULT CFsaRecoveryRec::Load ( IN IStream* pStream ) /*++
Implements:
IPersistStream::Load
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::Load"), OLESTR(""));
try { OLECHAR* pPath = NULL;
WsbAssertPointer(pStream); WsbAssertHr(WsbLoadFromStream(pStream, &m_BagId)); WsbAssertHr(WsbLoadFromStream(pStream, &m_BagOffset)); WsbAssertHr(WsbLoadFromStream(pStream, &m_FileId)); WsbAssertHr(WsbLoadFromStream(pStream, &m_Offset)); WsbAssertHr(WsbLoadFromStream(pStream, &m_Path, 0)); WsbAssertHr(WsbLoadFromStream(pStream, &m_RecoveryCount)); WsbAssertHr(WsbLoadFromStream(pStream, &m_Size)); WsbAssertHr(WsbLoadFromStream(pStream, &m_Status));
} WsbCatch(hr); WsbTraceOut(OLESTR("CFsaRecoveryRec::Load"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::Print ( IN IStream* pStream ) /*++
Implements:
IWsbDbEntity::Print
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::Print"), OLESTR(""));
try { WsbAssertPointer(pStream); CWsbStringPtr strGuid; WsbAffirmHr(WsbSafeGuidAsString(m_BagId, strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" BagId = %ls"), (WCHAR *)strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" BagOffset = %I64d"), m_BagOffset)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" FileId = %I64d"), m_FileId)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Offset = %I64d"), m_Offset)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Size = %I64d"), m_Size)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" RecoveryCount = %ld"), m_RecoveryCount)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Status = %lx"), m_Status)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(", Path = %ls"), static_cast<OLECHAR*>(m_Path)));
} WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::Print"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::Save ( IN IStream* pStream, IN BOOL clearDirty ) /*++
Implements:
IPersistStream::Save
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::Save"), OLESTR("clearDirty = <%ls>"), WsbBoolAsString(clearDirty));
try { WsbAssertPointer(pStream); WsbAssertHr(WsbSaveToStream(pStream, m_BagId)); WsbAssertHr(WsbSaveToStream(pStream, m_BagOffset)); WsbAssertHr(WsbSaveToStream(pStream, m_FileId)); WsbAssertHr(WsbSaveToStream(pStream, m_Offset)); WsbAssertHr(WsbSaveToStream(pStream, m_Path)); WsbAssertHr(WsbSaveToStream(pStream, m_RecoveryCount)); WsbAssertHr(WsbSaveToStream(pStream, m_Size)); WsbAssertHr(WsbSaveToStream(pStream, m_Status));
// If we got it saved and we were asked to clear the dirty bit, then
// do so now.
if (clearDirty) { m_isDirty = FALSE; } } WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::Save"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::SetBagId( IN GUID BagId ) /*++
Implements:
IFsaRecoveryRec::SetBagId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::SetBagId"),OLESTR(""));
m_BagId = BagId;
WsbTraceOut(OLESTR("CFsaRecoveryRec::SetBagId"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::SetBagOffset( IN LONGLONG BagOffset ) /*++
Implements:
IFsaRecoveryRec::SetBagOffset
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::SetBagOffset"),OLESTR(""));
m_BagOffset = BagOffset;
WsbTraceOut(OLESTR("CFsaRecoveryRec::SetBagOffset"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::SetFileId( IN LONGLONG FileId ) /*++
Implements:
IFsaRecoveryRec::SetFileId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::SetFileId"),OLESTR(""));
try { m_FileId = FileId; } WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::SetFileId"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::SetOffsetSize( IN LONGLONG Offset, IN LONGLONG Size ) /*++
Implements:
IFsaRecoveryRec::SetOffsetSize
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::SetOffsetSize"),OLESTR("Offset = %I64d, Size = %I64d"), Offset, Size);
m_Offset = Offset; m_Size = Size;
WsbTraceOut(OLESTR("CFsaRecoveryRec::SetOffsetSize"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::SetPath( IN OLECHAR* Path ) /*++
Implements:
IFsaRecoveryRec::SetPath
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::SetPath"),OLESTR("Path = <%ls>"), Path);
try { m_Path = Path; } WsbCatch(hr);
WsbTraceOut(OLESTR("CFsaRecoveryRec::SetPath"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::SetRecoveryCount( IN LONG RecoveryCount ) /*++
Implements:
IFsaRecoveryRec::SetRecoveryCount
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::SetRecoveryCount"),OLESTR("RecoveryCount = %ld"), RecoveryCount);
m_RecoveryCount = RecoveryCount;
WsbTraceOut(OLESTR("CFsaRecoveryRec::SetRecoveryCount"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::SetStatus( IN ULONG Status ) /*++
Implements:
IFsaRecoveryRec::SetStatus
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CFsaRecoveryRec::SetStatus"),OLESTR("Status = %lx"), Status);
m_Status = Status;
WsbTraceOut(OLESTR("CFsaRecoveryRec::SetStatus"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CFsaRecoveryRec::UpdateKey( IWsbDbKey *pKey ) /*++
Implements:
IWsbDbEntity::UpdateKey
--*/ { HRESULT hr = E_FAIL;
try { UCHAR FileKey[RECOVERY_KEY_SIZE + 1]; ULONG KeyType;
WsbAffirmHr(pKey->GetType(&KeyType)); if (RECOVERY_KEY_TYPE == KeyType) { WsbAffirmHr(SquashFilepath(m_Path, FileKey, RECOVERY_KEY_SIZE)); WsbAffirmHr(pKey->SetToBytes(FileKey, RECOVERY_KEY_SIZE)); hr = S_OK; } } WsbCatch(hr);
return(hr); }
|