windows-nt/Source/XPSP1/NT/base/fs/hsm/job/hsmjobcx.cpp
2020-09-26 16:20:57 +08:00

348 lines
5.4 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
© 1998 Seagate Software, Inc. All rights reserved.
Module Name:
hsmjobcx.cpp
Abstract:
This class contains properties that defines the context in which the job
should be run.
Author:
Chuck Bardeen [cbardeen] 29-Oct-1996
Revision History:
--*/
#include "stdafx.h"
#include "wsb.h"
#include "job.h"
#include "hsmjobcx.h"
#define WSB_TRACE_IS WSB_TRACE_BIT_JOB
static USHORT iCount = 0;
HRESULT
CHsmJobContext::EnumResources(
IWsbEnum** ppEnum
)
/*++
Implements:
IHsmJobContext::EnumResources().
--*/
{
HRESULT hr = S_OK;
try {
WsbAssert(0 != ppEnum, E_POINTER);
WsbAffirmHr(m_pResources->Enum(ppEnum));
} WsbCatch(hr);
return(hr);
}
HRESULT
CHsmJobContext::FinalConstruct(
void
)
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmJobContext::FinalConstruct"), OLESTR(""));
try {
m_usesAllManaged = FALSE;
//Create the Resources collection (with no items).
WsbAffirmHr(CWsbObject::FinalConstruct());
WsbAffirmHr(CoCreateInstance(CLSID_CWsbOrderedCollection, NULL, CLSCTX_ALL, IID_IWsbCollection, (void**) &m_pResources));
} WsbCatch(hr);
iCount++;
WsbTraceOut(OLESTR("CHsmJobContext::FinalConstruct"), OLESTR("hr = <%ls>, Count is <%d>"),
WsbHrAsString(hr), iCount);
return(hr);
}
void
CHsmJobContext::FinalRelease(
void
)
/*++
Implements:
CHsmJobContext::FinalRelease().
--*/
{
WsbTraceIn(OLESTR("CHsmJobContext::FinalRelease"), OLESTR(""));
CWsbObject::FinalRelease();
iCount--;
WsbTraceOut(OLESTR("CHsmJobContext:FinalRelease"), OLESTR("Count is <%d>"), iCount);
}
HRESULT
CHsmJobContext::GetClassID(
OUT CLSID* pClsid
)
/*++
Implements:
IPersist::GetClassID().
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmJobContext::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER);
*pClsid = CLSID_CHsmJobContext;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmJobContext::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr);
}
HRESULT
CHsmJobContext::GetSizeMax(
OUT ULARGE_INTEGER* pSize
)
/*++
Implements:
IPersistStream::GetSizeMax().
--*/
{
HRESULT hr = S_OK;
CComPtr<IPersistStream> pPersistStream;
WsbTraceIn(OLESTR("CHsmJobContext::GetSizeMax"), OLESTR(""));
try {
WsbAffirmHr(m_pResources->QueryInterface(IID_IPersistStream, (void**) &pPersistStream));
WsbAffirmHr(pPersistStream->GetSizeMax(pSize));
pSize->QuadPart += WsbPersistSizeOf(BOOL);
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmJobContext::GetSizeMax"), OLESTR("hr = <%ls>, Size = <%ls>"), WsbHrAsString(hr), WsbPtrToUliAsString(pSize));
return(hr);
}
HRESULT
CHsmJobContext::Load(
IN IStream* pStream
)
/*++
Implements:
IPersistStream::Load().
--*/
{
HRESULT hr = S_OK;
CComPtr<IPersistStream> pPersistStream;
WsbTraceIn(OLESTR("CHsmJobContext::Load"), OLESTR(""));
try {
WsbAssert(0 != pStream, E_POINTER);
WsbLoadFromStream(pStream, &m_usesAllManaged);
WsbAffirmHr(m_pResources->QueryInterface(IID_IPersistStream, (void**) &pPersistStream));
WsbAffirmHr(pPersistStream->Load(pStream));
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmJobContext::Load"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr);
}
HRESULT
CHsmJobContext::Resources(
IWsbCollection** ppResources
)
/*++
Implements:
IHsmJobContext::Resources().
--*/
{
HRESULT hr = S_OK;
try {
WsbAssert(0 != ppResources, E_POINTER);
*ppResources = m_pResources;
m_pResources->AddRef();
} WsbCatch(hr);
return(hr);
}
HRESULT
CHsmJobContext::Save(
IN IStream* pStream,
IN BOOL clearDirty
)
/*++
Implements:
IPersistStream::Save().
--*/
{
HRESULT hr = S_OK;
CComPtr<IPersistStream> pPersistStream;
WsbTraceIn(OLESTR("CHsmJobContext::Save"), OLESTR("clearDirty = <%ls>"), WsbBoolAsString(clearDirty));
try {
WsbAssert(0 != pStream, E_POINTER);
WsbSaveToStream(pStream, m_usesAllManaged);
WsbAffirmHr(m_pResources->QueryInterface(IID_IPersistStream, (void**) &pPersistStream));
WsbAffirmHr(pPersistStream->Save(pStream, clearDirty));
// 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("CHsmJobContext::Save"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr);
}
HRESULT
CHsmJobContext::Test(
USHORT* passed,
USHORT* failed
)
/*++
Implements:
IWsbTestable::Test().
--*/
{
HRESULT hr = S_OK;
try {
WsbAssert(0 != passed, E_POINTER);
WsbAssert(0 != failed, E_POINTER);
*passed = 0;
*failed = 0;
} WsbCatch(hr);
return(hr);
}
HRESULT
CHsmJobContext::SetUsesAllManaged(
IN BOOL usesAllManaged
)
/*++
Implements:
IHsmJobContext::SetUsesAllManaged().
--*/
{
m_usesAllManaged = usesAllManaged;
return(S_OK);
}
HRESULT
CHsmJobContext::UsesAllManaged(
void
)
/*++
Implements:
IHsmJobContext::UsesAllManaged().
--*/
{
return(m_usesAllManaged ? S_OK : S_FALSE);
}