|
|
/*++
Copyright (c) 1998 Seagate Software, Inc. All rights reserved.
Module Name:
MedInfo.cpp
Abstract:
This component is an object representation of the HSM Metadata media information record.
Author:
Cat Brant [cbrant] 27-Feb-1997
Revision History:
--*/
#include "stdafx.h"
#include "wsbgen.h"
#include "engine.h"
#include "metaint.h"
#include "metalib.h"
#include "MedInfo.h"
#include "segdb.h"
#undef WSB_TRACE_IS
#define WSB_TRACE_IS WSB_TRACE_BIT_META
static USHORT iCountMedinfo = 0;
HRESULT CMediaInfo::FinalConstruct( void ) /*++
Routine Description:
This method does some initialization of the object that is necessary after construction.
Arguments:
None.
Return Value:
S_OK Anything returned by CWsbDbEntity::FinalConstruct().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::FinalConstruct"),OLESTR("")); try {
WsbAssertHr(CWsbDbEntity::FinalConstruct());
//
// Initialize the master media record
//
m_Master.id = GUID_NULL; m_Master.ntmsId = GUID_NULL; m_Master.storagePoolId = GUID_NULL; m_Master.description = OLESTR(""); m_Master.name = OLESTR(""); m_Master.type = HSM_JOB_MEDIA_TYPE_UNKNOWN; m_Master.lastUpdate = WsbLLtoFT(0); m_Master.lastError = S_OK; m_Master.recallOnly = FALSE; m_Master.freeBytes = 0; m_Master.capacity = 0; m_Master.nextRemoteDataSet = 0; m_Recreate = FALSE; m_LogicalValidBytes = 0; //
// Now initialize the last known good master
//
m_LastKnownGoodMaster.id = GUID_NULL; m_LastKnownGoodMaster.ntmsId = GUID_NULL; m_LastKnownGoodMaster.storagePoolId = GUID_NULL; m_LastKnownGoodMaster.description = OLESTR(""); m_LastKnownGoodMaster.name = OLESTR(""); m_LastKnownGoodMaster.type = HSM_JOB_MEDIA_TYPE_UNKNOWN; m_LastKnownGoodMaster.lastUpdate = WsbLLtoFT(0); m_LastKnownGoodMaster.lastError = S_OK; m_LastKnownGoodMaster.recallOnly = FALSE; m_LastKnownGoodMaster.freeBytes = 0; m_LastKnownGoodMaster.capacity = 0; m_LastKnownGoodMaster.nextRemoteDataSet = 0; //
// Initialize the master's copy media records
//
for (int i = 0; i < HSM_MAX_NUMBER_MEDIA_COPIES; i++) { m_Copy[i].id = GUID_NULL; m_Copy[i].description = OLESTR(""); m_Copy[i].name = OLESTR(""); m_Copy[i].lastUpdate = WsbLLtoFT(0); m_Copy[i].lastError = S_OK; m_Copy[i].nextRemoteDataSet = 0; } } WsbCatch(hr); iCountMedinfo++; WsbTraceOut(OLESTR("CMediaInfo::FinalConstruct"), OLESTR("hr = <%ls>, Count is <%d>"), WsbHrAsString(hr), iCountMedinfo); return(hr); }
void CMediaInfo::FinalRelease( void )
/*++
Implements:
CMediaInfo::FinalRelease().
--*/ { WsbTraceIn(OLESTR("CMediaInfo::FinalRelease"), OLESTR("")); CWsbDbEntity::FinalRelease(); iCountMedinfo--; WsbTraceOut(OLESTR("CMediaInfo::FinalRelease"), OLESTR("Count is <%d>"), iCountMedinfo); }
HRESULT CMediaInfo::GetName( OLECHAR **pName, ULONG bufferSize ) /*++
Implements:
IMediaInfo::GetName
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetName"),OLESTR("buffer size = <%lu>"), bufferSize); try { WsbAssertPointer(pName); CWsbStringPtr tmpName; tmpName = m_Master.name; WsbAffirmHr(tmpName.CopyTo(pName, bufferSize)); } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetName"), OLESTR("hr = <%ls>, Name = <%ls>"), WsbHrAsString(hr), WsbPtrToStringAsString(pName)); return(hr); }
HRESULT CMediaInfo::GetCapacity( LONGLONG *pCapacity ) /*++
Implements:
IMediaInfo::GetCapacity
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetCapacity"),OLESTR("")); try { WsbAssertPointer(pCapacity); *pCapacity = m_Master.capacity; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetCapacity"), OLESTR("hr = <%ls>, Capacity = <%ls>"), WsbHrAsString(hr), WsbPtrToLonglongAsString(pCapacity)); return(hr); }
HRESULT CMediaInfo::GetClassID ( OUT LPCLSID pclsid ) /*++
Implements:
IPerist::GetClassID()
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetClassID"), OLESTR("")); try { WsbAssert(0 != pclsid, E_POINTER);
*pclsid = CLSID_CMediaInfo;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pclsid)); return(hr); }
HRESULT CMediaInfo:: GetCopyName( USHORT copyNumber, OLECHAR **pName, ULONG bufferSize ) /*++
Implements:
IMediaInfo::GetCopyName
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetCopyName"),OLESTR("")); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); WsbAssertPointer(pName); CWsbStringPtr tmpString; tmpString = m_Copy[copyNumber - 1].name; WsbAffirmHr(tmpString.CopyTo(pName, bufferSize)); } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetCopyName"), OLESTR("hr = <%ls>, Name = <%ls>"), WsbHrAsString(hr), WsbPtrToStringAsString(pName)); return(hr); }
HRESULT CMediaInfo:: GetCopyNextRemoteDataSet( USHORT copyNumber, SHORT *pNextRemoteDataSet ) /*++
Implements:
IMediaInfo::GetCopyNextRemoteDataSet
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetCopyNextRemoteDataSet"),OLESTR("")); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); WsbAssertPointer(pNextRemoteDataSet); *pNextRemoteDataSet = m_Copy[copyNumber - 1].nextRemoteDataSet; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetCopyNextRemoteDataSet"), OLESTR("hr = <%ls>, NextRemoteDataSet = <%ls>"), WsbHrAsString(hr), WsbPtrToShortAsString(pNextRemoteDataSet)); return(hr); }
HRESULT CMediaInfo::GetCopyDescription( USHORT copyNumber, OLECHAR **pDescription, ULONG bufferSize ) /*++
Implements:
IMediaInfo::GetCopyDescription
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetCopyDescription"),OLESTR("Copy = <%u>"), copyNumber); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); WsbAssertPointer(pDescription); CWsbStringPtr tmpDescription; tmpDescription = m_Copy[copyNumber - 1].description; WsbAffirmHr(tmpDescription.CopyTo(pDescription, bufferSize)); } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetCopyDescription"), OLESTR("hr = <%ls>, CopyDescription = <%ls>"), WsbHrAsString(hr), WsbPtrToStringAsString(pDescription)); return(hr); }
HRESULT CMediaInfo::GetCopyInfo( USHORT copyNumber, GUID *pMediaSubsystemId, OLECHAR **pDescription, ULONG descriptionBufferSize, OLECHAR **pName, ULONG nameBufferSize, FILETIME *pUpdate, HRESULT *pLastError, SHORT *pNextRemoteDataSet ) /*++
Implements:
IMediaInfo::GetCopyInfo
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetCopyInfo"),OLESTR("Copy is <%u>"), copyNumber); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); if (pMediaSubsystemId != 0) { *pMediaSubsystemId = m_Copy[copyNumber - 1].id; } if (pDescription != 0) { CWsbStringPtr tmpDescription; tmpDescription = m_Copy[copyNumber - 1].description; tmpDescription.CopyTo(pDescription, descriptionBufferSize); } if (pName != 0) { CWsbStringPtr tmpString; tmpString = m_Copy[copyNumber - 1].name; tmpString.CopyTo(pName, nameBufferSize); } if (pUpdate != 0) { *pUpdate = m_Copy[copyNumber - 1].lastUpdate; } if (pLastError != 0 ) { *pLastError = m_Copy[copyNumber - 1].lastError; } if (pNextRemoteDataSet != 0 ) { *pNextRemoteDataSet = m_Copy[copyNumber - 1].nextRemoteDataSet; } } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetCopyInfo"), OLESTR("hr = <%ls>, SubSystemID = <%ls>, Description = <%ls>, Name = <%ls>, Update = <%ls>, LastError = <%ls>, NextRemoteDataSet = <%ls>"), WsbHrAsString(hr), WsbPtrToGuidAsString(pMediaSubsystemId), WsbQuickString(WsbPtrToStringAsString(pDescription)), WsbQuickString(WsbPtrToStringAsString(pName)), WsbPtrToFiletimeAsString(FALSE, pUpdate), WsbPtrToHrAsString(pLastError), WsbPtrToShortAsString(pNextRemoteDataSet)); return(hr); }
HRESULT CMediaInfo::GetCopyLastError( USHORT copyNumber, HRESULT *pLastError ) /*++
Implements:
IMediaInfo::GetCopyLastError
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetCopyLastError"),OLESTR("Copy is <%u>"), copyNumber); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); WsbAssertPointer(pLastError); *pLastError = m_Copy[copyNumber - 1].lastError; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetCopyLastError"), OLESTR("hr = <%ls>, Last Error = <%ls>"), WsbHrAsString(hr), WsbPtrToHrAsString(pLastError)); return(hr); }
HRESULT CMediaInfo::GetCopyMediaSubsystemId( USHORT copyNumber, GUID *pMediaSubsystemId ) /*++
Implements:
IMediaInfo::GetCopyMediaSubsystemId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetCopyMediaSubsystemId"),OLESTR("Copy is <%u>"), copyNumber); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); WsbAssertPointer(pMediaSubsystemId); *pMediaSubsystemId = m_Copy[copyNumber - 1].id; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetCopyMediaSubsystemId"), OLESTR("hr = <%ls>, ID = <%ls>"), WsbHrAsString(hr), WsbPtrToGuidAsString(pMediaSubsystemId)); return(hr); }
HRESULT CMediaInfo::GetCopyUpdate( USHORT copyNumber, FILETIME *pUpdate ) /*++
Implements:
IMediaInfo::GetCopyUpdate
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetCopyUpdate"),OLESTR("Copy is <%u>"), copyNumber); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); WsbAssertPointer(pUpdate); *pUpdate = m_Copy[copyNumber - 1].lastUpdate; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetCopyUpdate"), OLESTR("hr = <%ls>, Update = <%ls>"), WsbHrAsString(hr), WsbPtrToFiletimeAsString(FALSE,pUpdate)); return(hr); }
HRESULT CMediaInfo::GetDescription( OLECHAR **pDescription, ULONG bufferSize ) /*++
Implements:
IMediaInfo::GetDescription
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetDescription"),OLESTR("")); try { WsbAssertPointer(pDescription); CWsbStringPtr tmpDescription; tmpDescription = m_Master.description; WsbAffirmHr(tmpDescription.CopyTo(pDescription, bufferSize)); } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetDescription"), OLESTR("hr = <%ls>, Description = <%ls>"), WsbHrAsString(hr), WsbPtrToStringAsString(pDescription)); return(hr); }
HRESULT CMediaInfo::GetFreeBytes( LONGLONG *pFreeBytes ) /*++
Implements:
IMediaInfo::GetFreeBytes
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetFreeBytes"),OLESTR("")); try { WsbAssertPointer(pFreeBytes); *pFreeBytes = m_Master.freeBytes; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetFreeBytes"), OLESTR("hr = <%ls>, Free Space = <%ls>"), WsbHrAsString(hr), WsbPtrToLonglongAsString(pFreeBytes)); return(hr); }
HRESULT CMediaInfo::GetId( GUID *pId ) /*++
Implements:
IMediaInfo::GetId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetId"),OLESTR("")); try { WsbAssertPointer(pId); *pId = m_Master.id; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetId"), OLESTR("hr = <%ls>, Id = <%ls>"), WsbHrAsString(hr), WsbPtrToGuidAsString(pId)); return(hr); }
HRESULT CMediaInfo::GetLastError( HRESULT *pLastError ) /*++
Implements:
IMediaInfo::GetLastError
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetLastError"),OLESTR("")); try { WsbAssertPointer(pLastError); *pLastError = m_Master.lastError; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetLastError"), OLESTR("hr = <%ls>, LastError = <%ls>"), WsbHrAsString(hr), WsbPtrToHrAsString(pLastError)); return(hr); }
HRESULT CMediaInfo::GetLogicalValidBytes( LONGLONG *pLogicalValidBytes ) /*++
Implements:
IMediaInfo::GetLogicalValidBytes
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetLogicalValidBytes"),OLESTR("")); try { WsbAssertPointer(pLogicalValidBytes); *pLogicalValidBytes = m_LogicalValidBytes; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetLogicalValidBytes"), OLESTR("hr = <%ls>, LogicalValidBytes = <%ls>"), WsbHrAsString(hr), WsbPtrToLonglongAsString(pLogicalValidBytes)); return(hr); }
HRESULT CMediaInfo::GetMediaInfo( GUID* pMediaId, GUID *pMediaSubsystemId, GUID *pStoragePoolId, LONGLONG *pFreeBytes, LONGLONG *pCapacity, HRESULT *pLastError, SHORT *pNextRemoteDataSet, OLECHAR **pDescription, ULONG descriptionBufferSize, HSM_JOB_MEDIA_TYPE *pType, OLECHAR **pName, ULONG nameBufferSize, BOOL *pRecallOnly, FILETIME *pUpdate, LONGLONG *pLogicalValidBytes, BOOL *pRecreate ) /*++
Implements:
IMediaInfo::GetMediaInfo
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetMediaInfo"),OLESTR("")); try { //Make sure we can provide data memebers
if (0 != pMediaId) { *pMediaId = m_Master.id; } if (0 != pMediaSubsystemId) { *pMediaSubsystemId = m_Master.ntmsId; } if (0 != pStoragePoolId) { *pStoragePoolId = m_Master.storagePoolId; } if (0 != pDescription) { CWsbStringPtr tmpString; tmpString = m_Master.description; WsbAffirmHr(tmpString.CopyTo(pDescription, descriptionBufferSize)); } if (0 != pName) { CWsbStringPtr tmpString; tmpString = m_Master.name; tmpString.CopyTo(pName, nameBufferSize); } if (0 != pType) { *pType = m_Master.type; } if (0 != pUpdate) { *pUpdate = m_Master.lastUpdate; } if (0 != pLastError) { *pLastError = m_Master.lastError; } if (0 != pRecallOnly) { *pRecallOnly = m_Master.recallOnly; } if (0 != pFreeBytes) { *pFreeBytes = m_Master.freeBytes; } if (0 != pCapacity) { *pCapacity = m_Master.capacity; } if (0 != pNextRemoteDataSet) { *pNextRemoteDataSet = m_Master.nextRemoteDataSet; } if (0 != pLogicalValidBytes) { *pLogicalValidBytes = m_LogicalValidBytes; } if (0 != pRecreate) { *pRecreate = m_Recreate; }
} WsbCatch(hr);
WsbTrace(OLESTR("CMediaInfo::GetMediaInfo id = <%ls>, ntmsId = <%ls>, StgPoolId = <%ls>\n"), WsbPtrToGuidAsString(pMediaId), WsbQuickString(WsbPtrToGuidAsString(pMediaSubsystemId)), WsbQuickString(WsbPtrToGuidAsString(pStoragePoolId))); WsbTrace(OLESTR("CMediaInfo::GetMediaInfo Free = <%ls>, Cap = <%ls>, Last Error = <%ls>\n"), WsbPtrToLonglongAsString(pFreeBytes),WsbQuickString(WsbPtrToLonglongAsString(pCapacity)), WsbPtrToHrAsString(pLastError)); WsbTrace(OLESTR("CMediaInfo::GetMediaInfo NextRemoteDataSet = <%ls>, Description = <%ls>, Type = <%ls>\n"), WsbPtrToShortAsString(pNextRemoteDataSet), WsbPtrToStringAsString(pDescription), WsbQuickString(WsbPtrToShortAsString((SHORT *)pType))); WsbTrace(OLESTR("CMediaInfo::GetMediaInfo Name = <%ls>, RecallOnly = <%ls>, Update = <%ls>\n"), WsbQuickString(WsbPtrToStringAsString(pName)), WsbQuickString(WsbPtrToBoolAsString(pRecallOnly)), WsbPtrToFiletimeAsString(FALSE, pUpdate)); WsbTrace(OLESTR("CMediaInfo::GetMediaInfo LogicalValid = <%ls>, Recreate = <%ls>\n"), WsbQuickString(WsbPtrToLonglongAsString(pLogicalValidBytes)), WsbQuickString(WsbPtrToBoolAsString(pRecreate))); WsbTraceOut(OLESTR("CMediaInfo::GetMediaInfo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::GetMediaSubsystemId( GUID *pMediaSubsystemId ) /*++
Implements:
IMediaInfo::GetMediaSubsystemId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetMediaSubsystemId"),OLESTR("")); try { WsbAssertPointer(pMediaSubsystemId); *pMediaSubsystemId = m_Master.ntmsId; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetMediaSubsystemId"), OLESTR("hr = <%ls>, SubsystemID = <%ls>"), WsbHrAsString(hr), WsbPtrToGuidAsString(pMediaSubsystemId)); return(hr); }
HRESULT CMediaInfo::GetNextRemoteDataSet( short *pNextRemoteDataSet ) /*++
Implements:
IMediaInfo::GetNextRemoteDataSet
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetNextRemoteDataSet"),OLESTR("")); try { WsbAssertPointer(pNextRemoteDataSet); *pNextRemoteDataSet = m_Master.nextRemoteDataSet; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetNextRemoteDataSet"), OLESTR("hr = <%ls>, Next Remote Data Set = <%ls>"), WsbHrAsString(hr), WsbPtrToShortAsString(pNextRemoteDataSet)); return(hr); }
HRESULT CMediaInfo::GetRecallOnlyStatus( BOOL *pRecallOnlyStatus ) /*++
Implements:
IMediaInfo::GetRecallOnlyStatus
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetRecallOnlyStatus"),OLESTR("")); try { WsbAssertPointer(pRecallOnlyStatus); *pRecallOnlyStatus = m_Master.recallOnly; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetRecallOnlyStatus"), OLESTR("hr = <%ls>, Read only Status = <%ls>"), WsbHrAsString(hr), WsbPtrToBoolAsString(pRecallOnlyStatus)); return(hr); }
HRESULT CMediaInfo::GetSizeMax ( OUT ULARGE_INTEGER* pcbSize ) /*++
Implements:
IPersistStream::GetSizeMax().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetSizeMax"), OLESTR("")); try { hr = E_NOTIMPL; pcbSize = 0; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetSizeMax"), OLESTR("hr = <%ls>, Size = <%ls>"), WsbHrAsString(hr), WsbPtrToUliAsString(pcbSize)); return(hr); }
HRESULT CMediaInfo::GetStoragePoolId( GUID *pStoragePoolId ) /*++
Implements:
IMediaInfo::GetStoragePoolId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetStoragePoolId"),OLESTR("")); try { WsbAssertPointer(pStoragePoolId); *pStoragePoolId = m_Master.storagePoolId; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetStoragePoolId"), OLESTR("hr = <%ls>, Storage Pool Id = <%ls>"), WsbHrAsString(hr), WsbPtrToGuidAsString(pStoragePoolId)); return(hr); }
HRESULT CMediaInfo::GetType( HSM_JOB_MEDIA_TYPE *pType ) /*++
Implements:
IMediaInfo::GetType
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetType"),OLESTR("")); try { WsbAssertPointer(pType); *pType = m_Master.type; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetType"), OLESTR("hr = <%ls>, type = <%ls>"), WsbHrAsString(hr), WsbPtrToShortAsString((SHORT *)pType)); return(hr); }
HRESULT CMediaInfo::GetUpdate( FILETIME *pUpdate ) /*++
Implements:
IMediaInfo::GetUpdate
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetUpdate"),OLESTR("")); try { WsbAssertPointer(pUpdate); *pUpdate = m_Master.lastUpdate; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetUpdate"), OLESTR("hr = <%ls>, Update = <%ls>"), WsbHrAsString(hr), WsbPtrToFiletimeAsString(FALSE, pUpdate)); return(hr); }
HRESULT CMediaInfo::Load ( IN IStream* pStream ) /*++
Implements:
IPersistStream::Load().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::Load"), OLESTR(""));
try { WsbAssert(0 != pStream, E_POINTER); ULONG descriptionLen = (ULONG)SEG_DB_MAX_MEDIA_NAME_LEN; ULONG nameLen = (ULONG)SEG_DB_MAX_MEDIA_BAR_CODE_LEN;
WsbAffirmHr(WsbLoadFromStream(pStream, &m_Master.id)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_Master.ntmsId)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_Master.storagePoolId)); m_Master.description.Realloc(SEG_DB_MAX_MEDIA_NAME_LEN); WsbAffirmHr(WsbLoadFromStream(pStream, (OLECHAR **)&m_Master.description, descriptionLen)); m_Master.name.Realloc(SEG_DB_MAX_MEDIA_BAR_CODE_LEN); WsbAffirmHr(WsbLoadFromStream(pStream, (OLECHAR **)&m_Master.name, nameLen)); LONG tmpLong; WsbAffirmHr(WsbLoadFromStream(pStream, &tmpLong)); m_Master.type = (HSM_JOB_MEDIA_TYPE)tmpLong; WsbAffirmHr(WsbLoadFromStream(pStream, &m_Master.freeBytes)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_Master.capacity)); WsbAffirmHr(WsbLoadFromStream(pStream, (LONG *)&m_Master.lastError)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_Master.recallOnly)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_Master.lastUpdate)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_Master.nextRemoteDataSet)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_LogicalValidBytes)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_Recreate)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_LastKnownGoodMaster.id)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_LastKnownGoodMaster.ntmsId)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_LastKnownGoodMaster.storagePoolId)); m_LastKnownGoodMaster.description.Realloc(SEG_DB_MAX_MEDIA_NAME_LEN); WsbAffirmHr(WsbLoadFromStream(pStream, (OLECHAR **)&m_LastKnownGoodMaster.description, descriptionLen)); m_LastKnownGoodMaster.name.Realloc(SEG_DB_MAX_MEDIA_BAR_CODE_LEN); WsbAffirmHr(WsbLoadFromStream(pStream, (OLECHAR **)&m_LastKnownGoodMaster.name, nameLen)); WsbAffirmHr(WsbLoadFromStream(pStream, &tmpLong)); m_LastKnownGoodMaster.type = (HSM_JOB_MEDIA_TYPE)tmpLong; WsbAffirmHr(WsbLoadFromStream(pStream, &m_LastKnownGoodMaster.freeBytes)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_LastKnownGoodMaster.capacity)); WsbAffirmHr(WsbLoadFromStream(pStream, (LONG *)&m_LastKnownGoodMaster.lastError)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_LastKnownGoodMaster.recallOnly)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_LastKnownGoodMaster.lastUpdate)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_LastKnownGoodMaster.nextRemoteDataSet)); for (int i = 0; i < HSM_MAX_NUMBER_MEDIA_COPIES; i++ ) { WsbAffirmHr(WsbLoadFromStream(pStream, &(m_Copy[i].id))); m_Copy[i].description.Realloc(SEG_DB_MAX_MEDIA_NAME_LEN); WsbAffirmHr(WsbLoadFromStream(pStream, (OLECHAR **)&(m_Copy[i].description), descriptionLen)); m_Copy[i].name.Realloc(SEG_DB_MAX_MEDIA_BAR_CODE_LEN); WsbAffirmHr(WsbLoadFromStream(pStream, (OLECHAR **)&(m_Copy[i].name), nameLen)); WsbAffirmHr(WsbLoadFromStream(pStream, &(m_Copy[i].lastUpdate))); WsbAffirmHr(WsbLoadFromStream(pStream, (LONG *)&(m_Copy[i].lastError))); WsbAffirmHr(WsbLoadFromStream(pStream, &(m_Copy[i].nextRemoteDataSet))); }
} WsbCatch(hr); WsbTrace(OLESTR("ID = <%ls>, rmsId = <%ls>, stgPoolId = <%ls>\n"), WsbQuickString(WsbGuidAsString(m_Master.id)), WsbQuickString(WsbGuidAsString(m_Master.ntmsId)), WsbQuickString(WsbGuidAsString(m_Master.storagePoolId))); WsbTrace(OLESTR("Description = <%ls>, name = <%ls>, type = <%u>\n"), (OLECHAR *)m_Master.description, (OLECHAR *)m_Master.name, m_Master.type); WsbTrace(OLESTR("FreeBytes = <%ls>, capacity = <%ls>, lastError = <%ls>\n"), WsbQuickString(WsbLonglongAsString(m_Master.freeBytes)), WsbQuickString(WsbLonglongAsString(m_Master.capacity)), WsbQuickString(WsbHrAsString(m_Master.lastError))); WsbTrace(OLESTR("RecallOnly = <%ls>, NextRemotDataSet = <%u>\n"), WsbBoolAsString(m_Master.recallOnly), m_Master.nextRemoteDataSet); WsbTrace(OLESTR("LastUpdate = <%ls>, logicalValidBytes = <%ls>, Recreate = <%ls>\n"), WsbFiletimeAsString(FALSE, m_Master.lastUpdate), WsbLonglongAsString(m_LogicalValidBytes), WsbBoolAsString(m_Recreate)); WsbTraceOut(OLESTR("CMediaInfo::Load"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::Print ( IN IStream* pStream ) /*++
Implements:
IWsbDbEntity::Print
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::Print"), OLESTR(""));
try { WsbAssert(0 != pStream, E_POINTER); CWsbStringPtr strGuid; WsbAffirmHr(WsbSafeGuidAsString(m_Master.id, strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" id = %ls,"), (WCHAR *)strGuid)); WsbAffirmHr(WsbSafeGuidAsString(m_Master.ntmsId, strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" ntmsId = %ls,"), (WCHAR *)strGuid)); WsbAffirmHr(WsbSafeGuidAsString(m_Master.storagePoolId, strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" StoragePoolId = %ls,"), (WCHAR *)strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" RS Media Name = %ls,"), (OLECHAR *)m_Master.description)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" RMS Media Name = %ls,"), (OLECHAR *)m_Master.name)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Media Type = %u,"), m_Master.type)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Last Update = %ls,"), WsbFiletimeAsString(FALSE, m_Master.lastUpdate))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Last Error = %ls,"), WsbHrAsString(m_Master.lastError))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Is Recall Only = %ls,"), WsbBoolAsString(m_Master.recallOnly))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Free Bytes = %ls,"), WsbQuickString(WsbLonglongAsString(m_Master.freeBytes)))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Capacity = %ls,"), WsbQuickString(WsbLonglongAsString(m_Master.capacity)))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Logical Valid Bytes = %ls,"), WsbQuickString(WsbLonglongAsString(m_LogicalValidBytes)))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" NextRemoteDataSet = %u,"), m_Master.nextRemoteDataSet)); WsbAffirmHr(CWsbDbEntity::Print(pStream)); //
// Last Known Good Master
//
WsbAffirmHr(WsbSafeGuidAsString(m_LastKnownGoodMaster.id, strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR("\n Last Known Good id = %ls,"), (WCHAR *)strGuid)); WsbAffirmHr(WsbSafeGuidAsString(m_LastKnownGoodMaster.ntmsId, strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" ntmsId = %ls,"), (WCHAR *)strGuid)); WsbAffirmHr(WsbSafeGuidAsString(m_LastKnownGoodMaster.storagePoolId, strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" StoragePoolId = %ls,"), (WCHAR *)strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" RS Media Name = %ls,"), (OLECHAR *)m_LastKnownGoodMaster.description)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" RMS Media Name = %ls,"), (OLECHAR *)m_LastKnownGoodMaster.name)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Media Type = %u,"), m_LastKnownGoodMaster.type)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Last Update = %ls,"), WsbFiletimeAsString(FALSE, m_LastKnownGoodMaster.lastUpdate))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Last Error = %ls,"), WsbHrAsString(m_LastKnownGoodMaster.lastError))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Is Recall Only = %ls,"), WsbBoolAsString(m_LastKnownGoodMaster.recallOnly))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Free Bytes = %ls,"), WsbQuickString(WsbLonglongAsString(m_LastKnownGoodMaster.freeBytes)))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Capacity = %ls,"), WsbQuickString(WsbLonglongAsString(m_LastKnownGoodMaster.capacity)))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" NextRemoteDataSet = %u,"), m_LastKnownGoodMaster.nextRemoteDataSet)); //
// Media Copies
//
for (int i = 0; i < HSM_MAX_NUMBER_MEDIA_COPIES; i++ ) { WsbAffirmHr(WsbSafeGuidAsString(m_Copy[i].id, strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR("\n RS Media Copy %d RMS ID = %ls,") ,(i+1), (WCHAR *)strGuid)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" RS Media Name = %ls,") , (OLECHAR *)m_Copy[i].description)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" RMS Media Name = %ls,") , (OLECHAR *)m_Copy[i].name)); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Last Update = %ls,") , WsbFiletimeAsString(FALSE,m_Copy[i].lastUpdate))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" Last Error = %ls,") , WsbHrAsString(m_Copy[i].lastError))); WsbAffirmHr(WsbPrintfToStream(pStream, OLESTR(" NextRemoteDataSet = %u,") , m_Copy[i].nextRemoteDataSet)); }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::Print"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CMediaInfo::Save ( IN IStream* pStream, IN BOOL clearDirty ) /*++
Implements:
IPersistStream::Save().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::Save"), OLESTR("clearDirty = <%ls>"), WsbBoolAsString(clearDirty)); WsbTrace(OLESTR("ID = <%ls>, rmsId = <%ls>, stgPoolId = <%ls>\n"), WsbQuickString(WsbGuidAsString(m_Master.id)), WsbQuickString(WsbGuidAsString(m_Master.ntmsId)), WsbQuickString(WsbGuidAsString(m_Master.storagePoolId))); WsbTrace(OLESTR("Description = <%ls>, name = <%ls>, type = <%u>\n"), (OLECHAR *)m_Master.description, (OLECHAR *)m_Master.name, m_Master.type); WsbTrace(OLESTR("FreeBytes = <%ls>, capacity = <%ls>, lastError = <%ls>\n"), WsbQuickString(WsbLonglongAsString(m_Master.freeBytes)), WsbQuickString(WsbLonglongAsString(m_Master.capacity)), WsbHrAsString(m_Master.lastError)); WsbTrace(OLESTR("RecallOnly = <%ls>, NextRemotDataSet = <%u>\n"), WsbBoolAsString(m_Master.recallOnly), m_Master.nextRemoteDataSet); WsbTrace(OLESTR("LastUpdate = <%ls>, logicalValidBytes = <%ls>, Recreate = <%ls>\n"), WsbFiletimeAsString(FALSE, m_Master.lastUpdate), WsbLonglongAsString(m_LogicalValidBytes), WsbBoolAsString(m_Recreate));
try { WsbAssert(0 != pStream, E_POINTER);
WsbAffirmHr(WsbSaveToStream(pStream, m_Master.id)); WsbAffirmHr(WsbSaveToStream(pStream, m_Master.ntmsId)); WsbAffirmHr(WsbSaveToStream(pStream, m_Master.storagePoolId)); WsbAffirmHr(WsbSaveToStream(pStream, (OLECHAR *)m_Master.description)); WsbAffirmHr(WsbSaveToStream(pStream, (OLECHAR *)m_Master.name)); WsbAffirmHr(WsbSaveToStream(pStream, (LONG)m_Master.type)); WsbAffirmHr(WsbSaveToStream(pStream, m_Master.freeBytes)); WsbAffirmHr(WsbSaveToStream(pStream, m_Master.capacity)); WsbAffirmHr(WsbSaveToStream(pStream, (LONG)m_Master.lastError)); WsbAffirmHr(WsbSaveToStream(pStream, m_Master.recallOnly)); WsbAffirmHr(WsbSaveToStream(pStream, m_Master.lastUpdate)); WsbAffirmHr(WsbSaveToStream(pStream, m_Master.nextRemoteDataSet)); WsbAffirmHr(WsbSaveToStream(pStream, m_LogicalValidBytes)); WsbAffirmHr(WsbSaveToStream(pStream, m_Recreate)); WsbAffirmHr(WsbSaveToStream(pStream, m_LastKnownGoodMaster.id)); WsbAffirmHr(WsbSaveToStream(pStream, m_LastKnownGoodMaster.ntmsId)); WsbAffirmHr(WsbSaveToStream(pStream, m_LastKnownGoodMaster.storagePoolId)); WsbAffirmHr(WsbSaveToStream(pStream, (OLECHAR *)m_LastKnownGoodMaster.description)); WsbAffirmHr(WsbSaveToStream(pStream, (OLECHAR *)m_LastKnownGoodMaster.name)); WsbAffirmHr(WsbSaveToStream(pStream, (LONG)m_LastKnownGoodMaster.type)); WsbAffirmHr(WsbSaveToStream(pStream, m_LastKnownGoodMaster.freeBytes)); WsbAffirmHr(WsbSaveToStream(pStream, m_LastKnownGoodMaster.capacity)); WsbAffirmHr(WsbSaveToStream(pStream, (LONG)m_LastKnownGoodMaster.lastError)); WsbAffirmHr(WsbSaveToStream(pStream, m_LastKnownGoodMaster.recallOnly)); WsbAffirmHr(WsbSaveToStream(pStream, m_LastKnownGoodMaster.lastUpdate)); WsbAffirmHr(WsbSaveToStream(pStream, m_LastKnownGoodMaster.nextRemoteDataSet)); for (int i = 0; i < HSM_MAX_NUMBER_MEDIA_COPIES; i++ ) { WsbAffirmHr(WsbSaveToStream(pStream, m_Copy[i].id)); WsbAffirmHr(WsbSaveToStream(pStream, m_Copy[i].description)); WsbAffirmHr(WsbSaveToStream(pStream, m_Copy[i].name)); WsbAffirmHr(WsbSaveToStream(pStream, m_Copy[i].lastUpdate)); WsbAffirmHr(WsbSaveToStream(pStream, (LONG)(m_Copy[i].lastError))); WsbAffirmHr(WsbSaveToStream(pStream, m_Copy[i].nextRemoteDataSet)); }
// 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("CMediaInfo::Save"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CMediaInfo::SetName( OLECHAR *name ) /*++
Implements:
IMediaInfo::SetName
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetName"),OLESTR("Name = <%ls>"), name); try { WsbAssertPointer(name); m_Master.name = name; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetName"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetCapacity( LONGLONG capacity ) /*++
Implements:
IMediaInfo::SetCapacity
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetCapacity"),OLESTR("Capacity = <%ls>"), WsbLonglongAsString(capacity)); try { m_Master.capacity = capacity; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetCapacity"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetCopyName( USHORT copyNumber, OLECHAR *name ) /*++
Implements:
IMediaInfo::SetCopyName
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetCopyName"),OLESTR("copy = <%u>, Name = <%ls>"), copyNumber, name); try {
// This method is not being used and currently we don't save the copy name in RSS database
// due to Windows Bugs 407340
WsbThrow(E_NOTIMPL);
/*** WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)),
E_INVALIDARG); m_Copy[copyNumber - 1].name = name; ***/ } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetCopyName"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetCopyNextRemoteDataSet( USHORT copyNumber, SHORT nextRemoteDataSet ) /*++
Implements:
IMediaInfo::SetCopyNextRemoteDataSet
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetCopyNextRemoteDataSet"),OLESTR("copy = <%u>, NextRemoteDataSet = <%d>"), copyNumber, nextRemoteDataSet); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); m_Copy[copyNumber - 1].nextRemoteDataSet = nextRemoteDataSet; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetCopyNextRemoteDataSet"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetCopyDescription( USHORT copyNumber, OLECHAR *description ) /*++
Implements:
IMediaInfo::SetCopyDescription
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetCopyDescription"),OLESTR("copy = <%u>, description = <%ls>"), copyNumber, description); try {
// This method is not being used and currently we don't save the copy description in RSS database
// due to Windows Bugs 407340
WsbThrow(E_NOTIMPL);
/*** WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)),
E_INVALIDARG); m_Copy[copyNumber - 1].description = description; ***/ } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetCopyDescription"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetCopyInfo( USHORT copyNumber, GUID mediaSubsystemId, OLECHAR *description, OLECHAR *name, FILETIME update, HRESULT lastError, SHORT nextRemoteDataSet ) /*++
Implements:
IMediaInfo::SetCopyInfo
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetCopyInfo"),OLESTR("copy = <%u>, SubsystemId = <%ls>, Description = <%ls>, Name = <%ls>, update = <%ls>, lastError = <%ls>, NextRemoteDataSet = <%d> "), copyNumber, WsbGuidAsString(mediaSubsystemId), description, name, WsbFiletimeAsString(FALSE, update),WsbHrAsString(lastError)); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); m_Copy[copyNumber - 1].id = mediaSubsystemId;
// We don't save the copy name & description in RSS database anymore due to Windows Bugs 407340
// The strings in the structure are already initialize to a null string so there's no need to set them again
/*** m_Copy[copyNumber - 1].description = description;
m_Copy[copyNumber - 1].name = name; ***/
m_Copy[copyNumber - 1].lastUpdate = update; m_Copy[copyNumber - 1].lastError = lastError; m_Copy[copyNumber - 1].nextRemoteDataSet = nextRemoteDataSet; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetCopyInfo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetCopyLastError( USHORT copyNumber, HRESULT lastError ) /*++
Implements:
IMediaInfo::SetCopyLastError
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetCopyLastError"),OLESTR("Last Error = <%ls>"), WsbHrAsString(lastError)); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); m_Copy[copyNumber - 1].lastError = lastError; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetCopyLastError"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetCopyMediaSubsystemId( USHORT copyNumber, GUID mediaSubsystemId ) /*++
Implements:
IMediaInfo::SetCopyMediaSubsystemId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetCopyMediaSubsystemId"),OLESTR("SubsystemId = <%ls>"), WsbGuidAsString(mediaSubsystemId)); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); m_Copy[copyNumber - 1].id = mediaSubsystemId; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetCopyMediaSubsystemId"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetCopyUpdate( USHORT copyNumber, FILETIME update ) /*++
Implements:
IMediaInfo::SetCopyUpdate
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetCopyUpdate"),OLESTR("update = <%ls>"), WsbFiletimeAsString(FALSE, update)); try { WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); m_Copy[copyNumber - 1].lastUpdate = update; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetCopyUpdate"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetDescription( OLECHAR *description ) /*++
Implements:
IMediaInfo::SetDescription
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetDescription"),OLESTR("description = <%ls>"), description); try { WsbAssertPointer(description); m_Master.description = description; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetDescription"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetFreeBytes( LONGLONG FreeBytes ) /*++
Implements:
IMediaInfo::SetFreeBytes
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetFreeBytes"),OLESTR("Free Space = <%ls>"), WsbLonglongAsString(FreeBytes)); try { m_Master.freeBytes = FreeBytes; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetFreeBytes"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetId( GUID id ) /*++
Implements:
IMediaInfo::SetId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetId"),OLESTR("ID = <%ls>"), WsbGuidAsString(id)); try { m_Master.id = id; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetId"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetLastError( HRESULT lastError ) /*++
Implements:
IMediaInfo::SetLastError
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetLastError"),OLESTR("last error = <%ls>"), WsbHrAsString(lastError)); try { m_Master.lastError = lastError; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetLastError"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetLogicalValidBytes( LONGLONG logicalValidBytes ) /*++
Implements:
IMediaInfo::SetLogicalValidBytes
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetLogicalValidBytes"),OLESTR("LogicalValidBytes = <%ls>"), WsbLonglongAsString(logicalValidBytes)); try { m_LogicalValidBytes = logicalValidBytes; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetLogicalValidBytes"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetMediaInfo ( GUID mediaId, GUID mediaSubsystemId, GUID storagePoolId, LONGLONG FreeBytes, LONGLONG Capacity, HRESULT lastError, short nextRemoteDataSet, OLECHAR *description, HSM_JOB_MEDIA_TYPE type, OLECHAR *name, BOOL RecallOnly, FILETIME update, LONGLONG logicalValidBytes, BOOL recreate ) /*++
Implements:
IMediaInfo::SetMediaInfo().
--*/ { WsbTraceIn(OLESTR("CMediaInfo::SetMediaInfo"), OLESTR("")); WsbTrace(OLESTR("CMediaInfo::SetMediaInfo id = <%ls>, SubsystemId = <%ls>, StoragePoolId = <%ls>\n"), WsbGuidAsString(mediaId), WsbQuickString(WsbGuidAsString(mediaSubsystemId)), WsbQuickString(WsbGuidAsString(storagePoolId))); WsbTrace(OLESTR("CMediaInfo::SetMediaInfo FreeBytes = <%ls>, Capacity = <%ls>, lastError = <%ls>\n"), WsbLonglongAsString(FreeBytes), WsbQuickString(WsbLonglongAsString(Capacity)), WsbHrAsString(lastError)); WsbTrace(OLESTR("CMediaInfo::SetMediaInfo NextRemoteDataSet = <%d>, Description = <%ls>, Type = <%d>\n"), nextRemoteDataSet, (OLECHAR *)description, type); WsbTrace(OLESTR("CMediaInfo::SetMediaInfo Name = <%ls>, RecallOnly = <%ls>, update = <%ls>\n"), (OLECHAR *)name, WsbBoolAsString(RecallOnly), WsbFiletimeAsString(FALSE, update)); WsbTrace(OLESTR("CMediaInfo::SetMediaInfo logicalValidBytes = <%ls>, recreate = <%ls>\n)"), WsbLonglongAsString(logicalValidBytes), WsbBoolAsString(m_Recreate));
m_isDirty = TRUE; m_Master.id = mediaId; m_Master.ntmsId = mediaSubsystemId; m_Master.storagePoolId = storagePoolId; m_Master.freeBytes = FreeBytes; m_Master.capacity = Capacity; m_Master.lastError = lastError; m_Master.description = description; m_Master.type = type; m_Master.name = name; m_Master.recallOnly = RecallOnly; m_Master.lastUpdate = update; m_Master.nextRemoteDataSet = nextRemoteDataSet; m_LogicalValidBytes = logicalValidBytes; m_Recreate = recreate; WsbTraceOut(OLESTR("CMediaInfo::SetMediaInfo"), OLESTR("hr = <%ls>"),WsbHrAsString(S_OK)); return(S_OK); }
HRESULT CMediaInfo::SetMediaSubsystemId( GUID mediaSubsystemId ) /*++
Implements:
IMediaInfo::SetMediaSubsystemId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetMediaSubsystemId "),OLESTR("Subsystem Id = <%ls>"), WsbGuidAsString(mediaSubsystemId)); try { m_Master.ntmsId = mediaSubsystemId; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetMediaSubsystemId "), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetNextRemoteDataSet( short nextRemoteDataSet ) /*++
Implements:
IMediaInfo::SetNextRemoteDataSet
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetNextRemoteDataSet"),OLESTR("Data Set = <%u>"), nextRemoteDataSet); try { m_Master.nextRemoteDataSet = nextRemoteDataSet; m_LastKnownGoodMaster.nextRemoteDataSet = nextRemoteDataSet;
//
// Handle exception case where a copy reports more data sets than the
// master. This occurs when we increment the data set count, but
// never write to the media, then create a media copy, then write
// to the master which decrements the data set count to handle the
// missing data set, then finally increment the data set count.
for (int i=0; i< HSM_MAX_NUMBER_MEDIA_COPIES; i++) { if (m_Copy[i].nextRemoteDataSet > 0) { if (nextRemoteDataSet < m_Copy[i].nextRemoteDataSet) { WsbAssert(nextRemoteDataSet+1 == m_Copy[i].nextRemoteDataSet, E_UNEXPECTED); m_Copy[i].nextRemoteDataSet--; } } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetNextRemoteDataSet"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetRecallOnlyStatus( BOOL RecallOnlyStatus ) /*++
Implements:
IMediaInfo::SetRecallOnlyStatus
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetRecallOnlyStatus"),OLESTR("Read Only Status = <%ls>"), WsbBoolAsString(RecallOnlyStatus)); try { m_Master.recallOnly = RecallOnlyStatus; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetRecallOnlyStatus"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetStoragePoolId( GUID storagePoolId ) /*++
Implements:
IMediaInfo::SetStoragePoolId
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetStoragePoolId"),OLESTR("Storage Pool Id = <%ls>"), WsbGuidAsString(storagePoolId)); try { m_Master.storagePoolId = storagePoolId; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetStoragePoolId"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetType( HSM_JOB_MEDIA_TYPE type ) /*++
Implements:
IMediaInfo::SetType
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetType"),OLESTR("type = <%u>"), (USHORT)type); try { m_Master.type = type; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetType"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetUpdate( FILETIME update ) /*++
Implements:
IMediaInfo::SetUpdate
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetUpdate"),OLESTR("Update = <%ls>"), WsbFiletimeAsString(FALSE, update)); try { m_Master.lastUpdate = update; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetUpdate"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::Test ( OUT USHORT *pTestsPassed, OUT USHORT *pTestsFailed ) /*++
Implements:
IWsbTestable::Test().
--*/ { HRESULT hr = S_OK; CComPtr<IMediaInfo> pMediaInfo1; CComPtr<IMediaInfo> pMediaInfo2;
WsbTraceIn(OLESTR("CMediaInfo::Test"), OLESTR(""));
*pTestsPassed = *pTestsFailed = 0; try { hr = E_NOTIMPL; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::Test"), OLESTR("hr = <%ls>"),WsbHrAsString(hr)); return( hr ); }
HRESULT CMediaInfo::UpdateKey( IWsbDbKey *pKey ) /*++
Implements:
IWsbDbEntity::UpdateKey
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::UpdateKey"),OLESTR("")); try { WsbAffirmHr(pKey->SetToGuid(m_Master.id)); } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::UpdateKey"),OLESTR("hr = <%ls>"),WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::SetRecreate( BOOL recreate ) /*++
Implements:
IMediaInfo::SetRecreate
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::SetRecreate"),OLESTR("Recreate = <%ls>"), WsbBoolAsString(recreate)); try { m_Recreate = recreate; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::SetRecreate"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::GetRecreate( BOOL *pRecreate ) /*++
Implements:
IMediaInfo::GetRecreate
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetRecreate"),OLESTR("")); try { WsbAssertPointer(pRecreate); *pRecreate = m_Recreate; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetRecreate"), OLESTR("hr = <%ls>, recreate = <%ls>"), WsbHrAsString(hr), WsbPtrToBoolAsString(pRecreate)); return(hr); }
HRESULT CMediaInfo::GetLastKnownGoodMasterInfo( GUID* pId, GUID *pNtmsId, GUID *pStoragePoolId, LONGLONG *pFreeBytes, LONGLONG *pCapacity, HRESULT *pLastError, OLECHAR **pDescription, ULONG descriptionBufferSize, HSM_JOB_MEDIA_TYPE *pType, OLECHAR **pName, ULONG nameBufferSize, BOOL *pRecallOnly, FILETIME *pUpdate, SHORT *pNextRemoteDataSet ) /*++
Implements:
IMediaInfo::GetLastKnownGoodMasterInfo
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetLastKnownGoodMasterInfo"),OLESTR("")); try { //Make sure we can provide data memebers
if (0 != pId) { *pId = m_LastKnownGoodMaster.id; } if (0 != pNtmsId) { *pNtmsId = m_LastKnownGoodMaster.ntmsId; } if (0 != pStoragePoolId) { *pStoragePoolId = m_LastKnownGoodMaster.storagePoolId; } if (0 != pDescription) { CWsbStringPtr tmpString; tmpString = m_LastKnownGoodMaster.description; tmpString.CopyTo(pDescription, descriptionBufferSize); } if (0 != pName) { CWsbStringPtr tmpString; tmpString = m_LastKnownGoodMaster.name; tmpString.CopyTo(pName, nameBufferSize); } if (0 != pType) { *pType = m_LastKnownGoodMaster.type; } if (0 != pUpdate) { *pUpdate = m_LastKnownGoodMaster.lastUpdate; } if (0 != pLastError) { *pLastError = m_LastKnownGoodMaster.lastError; } if (0 != pRecallOnly) { *pRecallOnly = m_LastKnownGoodMaster.recallOnly; } if (0 != pFreeBytes) { *pFreeBytes = m_LastKnownGoodMaster.freeBytes; } if (0 != pCapacity) { *pCapacity = m_LastKnownGoodMaster.capacity; } if (0 != pNextRemoteDataSet) { *pNextRemoteDataSet = m_LastKnownGoodMaster.nextRemoteDataSet; }
} WsbCatch(hr);
WsbTrace(OLESTR("CMediaInfo::GetLastKnownGoodMasterInfo Id = <%ls>, ntmsId = <%ls>, StgPoolId = <%ls>\n"), WsbPtrToGuidAsString(pId), WsbQuickString(WsbPtrToGuidAsString(pNtmsId)), WsbQuickString(WsbPtrToGuidAsString(pStoragePoolId))); WsbTrace(OLESTR("CMediaInfo::GetLastKnownGoodMasterInfo Free = <%ls>, Cap = <%ls>, Last Error = <%ls>\n"), WsbPtrToLonglongAsString(pFreeBytes),WsbQuickString(WsbPtrToLonglongAsString(pCapacity)), WsbPtrToHrAsString(pLastError)); WsbTrace(OLESTR("CMediaInfo::GetLastKnownGoodMasterInfo Description = <%ls>, Type = <%d)\n"), WsbPtrToStringAsString(pDescription), WsbQuickString(WsbPtrToShortAsString((SHORT *)pType))); WsbTrace(OLESTR("CMediaInfo::GetLastKnownGoodMasterInfo Name = <%ls>, RecallOnly = <%ls>, Update = <%ls>, NextRemoteDataSet = <%ls>\n"), WsbQuickString(WsbPtrToStringAsString(pName)), WsbQuickString(WsbPtrToBoolAsString(pRecallOnly)), WsbPtrToFiletimeAsString(FALSE, pUpdate), WsbPtrToShortAsString(pNextRemoteDataSet)); WsbTraceOut(OLESTR("CMediaInfo::GetLastKnownGoodMasterInfo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::GetLKGMasterNextRemoteDataSet( short *pNextRemoteDataSet ) /*++
Implements:
IMediaInfo::GetLKGMasterNextRemoteDataSet
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::GetLKGMasterNextRemoteDataSet"),OLESTR("")); try { WsbAssertPointer(pNextRemoteDataSet); *pNextRemoteDataSet = m_LastKnownGoodMaster.nextRemoteDataSet; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::GetLKGMasterNextRemoteDataSet"), OLESTR("hr = <%ls>, Next Last-Known-Good-Master Remote-Data-Set = <%ls>"), WsbHrAsString(hr), WsbPtrToShortAsString(pNextRemoteDataSet)); return(hr); }
HRESULT CMediaInfo::SetLastKnownGoodMasterInfo ( GUID mediaId, GUID mediaSubsystemId, GUID storagePoolId, LONGLONG FreeBytes, LONGLONG Capacity, HRESULT lastError, OLECHAR *description, HSM_JOB_MEDIA_TYPE type, OLECHAR *name, BOOL RecallOnly, FILETIME update, SHORT nextRemoteDataSet ) /*++
Implements:
IMediaInfo::SetLastKnownGoodMasterInfo().
--*/ { WsbTraceIn(OLESTR("CMediaInfo::SetLastKnownGoodMasterInfo"), OLESTR("")); WsbTrace(OLESTR("CMediaInfo::SetLastKnownGoodMasterInfo"), OLESTR("id = <%ls>, SubsystemId = <%ls>, StoragePoolId = <%ls>\n"), WsbGuidAsString(mediaId), WsbQuickString(WsbGuidAsString(mediaSubsystemId)), WsbQuickString(WsbGuidAsString(storagePoolId))); WsbTrace(OLESTR("CMediaInfo::SetLastKnownGoodMasterInfo"), OLESTR("FreeBytes = <%ls>, Capacity = <%ls>, lastError = <%ls>\n"), WsbLonglongAsString(FreeBytes), WsbQuickString(WsbLonglongAsString(Capacity)), WsbHrAsString(lastError)); WsbTrace(OLESTR("CMediaInfo::SetLastKnownGoodMasterInfo"), OLESTR("Description = <%ls>, Type = <%d>\n"), (OLECHAR *)description, type); WsbTrace(OLESTR("CMediaInfo::SetLastKnownGoodMasterInfo"), OLESTR("Name = <%ls>, RecallOnly = <%ls>, update = <%ls>, nextRemoteDataSet = <%d>\n"), (OLECHAR *)name, WsbBoolAsString(RecallOnly), WsbFiletimeAsString(FALSE, update), nextRemoteDataSet);
m_isDirty = TRUE; m_LastKnownGoodMaster.id = mediaId; m_LastKnownGoodMaster.ntmsId = mediaSubsystemId; m_LastKnownGoodMaster.storagePoolId = storagePoolId; m_LastKnownGoodMaster.freeBytes = FreeBytes; m_LastKnownGoodMaster.capacity = Capacity; m_LastKnownGoodMaster.lastError = lastError; m_LastKnownGoodMaster.type = type;
/*** These strings are not being used for anything and we need to save space in the media record - see Windows Bugs 407340
m_LastKnownGoodMaster.description = description; m_LastKnownGoodMaster.name = name; ***/ m_LastKnownGoodMaster.recallOnly = RecallOnly; m_LastKnownGoodMaster.lastUpdate = update; m_LastKnownGoodMaster.nextRemoteDataSet = nextRemoteDataSet;
WsbTraceOut(OLESTR("CMediaInfo::SetLastKnownGoodMasterInfo"), OLESTR("hr = <%ls>"),WsbHrAsString(S_OK)); return(S_OK); }
HRESULT CMediaInfo::DeleteCopy( USHORT copyNumber ) /*++
Implements:
IMediaInfo::DeleteCopy
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::DeleteCopy"),OLESTR("copy = <%u>"), copyNumber); try { //
// Make sure we have a valid copy number
//
WsbAffirm(((0 < copyNumber) && (copyNumber <= HSM_MAX_NUMBER_MEDIA_COPIES)), E_INVALIDARG); //
// Null out the existing copy information
//
m_Copy[copyNumber - 1].id = GUID_NULL; m_Copy[copyNumber - 1].description = OLESTR(""); m_Copy[copyNumber - 1].name = OLESTR(""); m_Copy[copyNumber - 1].lastUpdate = WsbLLtoFT(0); m_Copy[copyNumber - 1].lastError = S_OK; m_Copy[copyNumber - 1].nextRemoteDataSet = 0; } WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::DeleteCopy"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::RecreateMaster( void ) /*++
Implements:
IMediaInfo::RecreateMaster
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::RecreateMaster"),OLESTR("")); try { //
// Mark the master as one that needs to be recreated
//
m_Recreate = TRUE; //
// Also, make sure we don't add data to this master
//
m_Master.recallOnly = TRUE;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CMediaInfo::RecreateMaster"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
//
// Internal (non COM) Helper functions
//
HRESULT CMediaInfo::UpdateLastKnownGoodMaster( void ) /*++
Implements:
IMediaInfo::UpdateLastKnownGoodMaster
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CMediaInfo::UpdateLastKnownGoodMaster"),OLESTR(""));
m_LastKnownGoodMaster.id = m_Master.id; m_LastKnownGoodMaster.ntmsId = m_Master.ntmsId; m_LastKnownGoodMaster.storagePoolId = m_Master.storagePoolId; m_LastKnownGoodMaster.freeBytes = m_Master.freeBytes; m_LastKnownGoodMaster.capacity = m_Master.capacity; m_LastKnownGoodMaster.lastError = m_Master.lastError; m_LastKnownGoodMaster.type = m_Master.type;
// These strings are not being used for anything and we need to save space in the media record - see Windows Bugs 407340
m_LastKnownGoodMaster.description = OLESTR(""); m_LastKnownGoodMaster.name = OLESTR("");
/*** m_LastKnownGoodMaster.description = m_Master.description;
m_LastKnownGoodMaster.name = m_Master.name; ***/
m_LastKnownGoodMaster.recallOnly = m_Master.recallOnly; m_LastKnownGoodMaster.lastUpdate = m_Master.lastUpdate; m_LastKnownGoodMaster.nextRemoteDataSet = m_Master.nextRemoteDataSet;
WsbTraceOut(OLESTR("CMediaInfo::UpdateLastKnownGoodMaster"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CMediaInfo::WriteToDatabase( void ) /*++
Routine Description:
This function writes the information to the metadata database. Note all other set functions require the caller to call the Write() funtion for the entity.
Arguments:
None
Return Value: S_OK: If the LastKnownGoodMaster is to be updated
--*/
{ HRESULT hr = S_OK; BOOLEAN openedDb = FALSE; CComPtr<IWsbDb> pSegmentDb; CComPtr<IMediaInfo> pMediaInfo; CComPtr<IHsmServer> pServer; CComPtr<IWsbDbSession> pDbSession;
WsbTraceIn(OLESTR("CMediaInfo::WriteToDatabase"),OLESTR("")); try { //
// Find the database containing the record that matches this
// collectable.
//
WsbAffirmHr(CoCreateInstance( CLSID_HsmServer, 0, CLSCTX_SERVER, IID_IHsmServer, (void **)&pServer )); WsbAffirmHr(pServer->GetSegmentDb(&pSegmentDb)); //
// Find the database entity
//
WsbAffirmHr(pSegmentDb->Open(&pDbSession)); openedDb = TRUE; WsbTrace(OLESTR("CMediaInfo::WriteToDatabase - Opened the database\n")); WsbAffirmHr(pSegmentDb->GetEntity(pDbSession, HSM_MEDIA_INFO_REC_TYPE, IID_IMediaInfo, (void**)&pMediaInfo)); WsbAffirmHr(pMediaInfo->SetId(m_Master.id)); WsbAffirmHr(pMediaInfo->FindEQ()); //
// Write the changes to the database. To be sure that the "outside" world
// doesn't change anything but the allowed fields, just set the fields that are
// allowed to be changed.
//
WsbAffirmHr(pMediaInfo->SetRecreate(m_Recreate)); WsbAffirmHr(SetRecallOnlyStatus(m_Master.recallOnly)); for (int i = 1; i <= HSM_MAX_NUMBER_MEDIA_COPIES; i++) { WsbAffirmHr(pMediaInfo->SetCopyInfo( (SHORT)i, m_Copy[i-1].id, (OLECHAR *)m_Copy[i-1].description, (OLECHAR *)m_Copy[i-1].name, m_Copy[i-1].lastUpdate, m_Copy[i-1].lastError, m_Copy[i-1].nextRemoteDataSet)); } WsbAffirmHr(pMediaInfo->Write()); } WsbCatch(hr);
if (openedDb) { WsbTrace(OLESTR("CMediaInfo::WriteToDatabase - Closing the database\n")); pSegmentDb->Close(pDbSession); pDbSession = 0; openedDb = FALSE; } WsbTraceOut(OLESTR("CMediaInfo::WriteToDatabase"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
|