|
|
/*++
� 1998 Seagate Software, Inc. All rights reserved.
Module Name:
hsmcrit.cpp
Abstract:
This component represents the criteria that can be used to determine whether a given scanItem should have a policy applied to it.
Author:
Chuck Bardeen [cbardeen] 29-Oct-1996
Revision History:
--*/
#include "stdafx.h"
#include "mapiutil.h"
#include "wsb.h"
#include "job.h"
#include "hsmcrit.h"
#define WSB_TRACE_IS WSB_TRACE_BIT_JOB
HRESULT CHsmCriteria::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CWsbObject::FinalConstruct()); m_isIgnored = FALSE; m_isNegated = FALSE;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCriteria::GetName( OUT OLECHAR** pName, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::GetName().
--*/ { HRESULT hr = S_OK; CWsbStringPtr tmpString;
try {
WsbAssert(0 != pName, E_POINTER); WsbAffirmHr(tmpString.LoadFromRsc(_Module.m_hInst, m_nameId)); WsbAffirmHr(tmpString.CopyTo(pName, bufferSize));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCriteria::GetSizeMax( OUT ULARGE_INTEGER* pSize )
/*++
Implements:
IPersistStream::GetSizeMax().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCriteria::GetSizeMax"), OLESTR(""));
try { WsbAssert(0 != pSize, E_POINTER); pSize->QuadPart = WsbPersistSizeOf(GUID) + WsbPersistSizeOf(BOOL) + WsbPersistSizeOf(BOOL);
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCriteria::GetSizeMax"), OLESTR("hr = <%ls>, Size = <%ls>"), WsbHrAsString(hr), WsbPtrToUliAsString(pSize));
return(hr); }
HRESULT CHsmCriteria::IsIgnored( void )
/*++
Implements:
IHsmCriteria::IsIgnored().
--*/ { return(m_isIgnored ? S_OK : S_FALSE); }
HRESULT CHsmCriteria::IsNegated( void )
/*++
Implements:
IHsmCriteria::IsNegated().
--*/ { return(m_isNegated ? S_OK : S_FALSE); }
HRESULT CHsmCriteria::Load( IN IStream* pStream )
/*++
Implements:
IPersistStream::Load().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCriteria::Load"), OLESTR(""));
try {
WsbAssert(0 != pStream, E_POINTER);
WsbAffirmHr(WsbLoadFromStream(pStream, &m_nameId)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_isIgnored)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_isNegated));
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCriteria::Load"), OLESTR("hr = <%ls>, nameId = <%lu>"), WsbHrAsString(hr), m_nameId);
return(hr); }
HRESULT CHsmCriteria::Save( IN IStream* pStream, IN BOOL clearDirty )
/*++
Implements:
IPersistStream::Save().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCriteria::Save"), OLESTR("clearDirty = <%ls>"), WsbBoolAsString(clearDirty)); try {
WsbAssert(0 != pStream, E_POINTER);
WsbAffirmHr(WsbSaveToStream(pStream, m_nameId)); WsbAffirmHr(WsbSaveToStream(pStream, m_isIgnored)); WsbAffirmHr(WsbSaveToStream(pStream, m_isNegated));
// 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("CHsmCriteria::Save"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCriteria::SetIsIgnored( IN BOOL isIgnored )
/*++
Implements:
IHsmCriteria::SetIsIgnored().
--*/ { m_isIgnored = isIgnored; m_isDirty = TRUE;
return(S_OK); }
HRESULT CHsmCriteria::SetIsNegated( IN BOOL isNegated )
/*++
Implements:
IHsmCriteria::SetIsNegated().
--*/ { m_isNegated = isNegated; m_isDirty = TRUE;
return(S_OK); }
HRESULT CHsmCriteria::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 CHsmRelativeCriteria::ComparatorAsString( OUT OLECHAR** pComparator, IN ULONG bufferSize )
/*++
Implements:
IHsmRelativeCriteria::ComparatorAsString().
--*/ { HRESULT hr = S_OK;
try { WsbAssert(0 != pComparator, E_POINTER); WsbAffirmHr(WsbLoadComString(_Module.m_hInst, IDS_HSM_CRITERIACOMPARATOR_NOTSET + m_comparator, pComparator, bufferSize));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmRelativeCriteria::ComparatorIsBinary( void )
/*++
Implements:
IHsmRelativeCriteria::ComparatorIsBinary().
--*/ { HRESULT hr = S_FALSE;
if ((m_comparator == HSM_CRITERIACOMPARATOR_BETWEEN) || (m_comparator == HSM_CRITERIACOMPARATOR_OUTSIDE)) {
hr = S_OK; }
return(hr); }
HRESULT CHsmRelativeCriteria::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmCriteria::FinalConstruct());
m_comparator = HSM_CRITERIACOMPARATOR_NOTSET; m_arg1 = 0; m_arg2 = 0;
} WsbCatch(hr);
return(hr); }
void CHsmRelativeCriteria::FinalRelease( void )
/*++
Implements:
CComObjectRoot::FinalRelease().
--*/ { // Free the memory used by the arg1 string.
if (0 != m_arg1) { WsbFree(m_arg1); m_arg1 = 0; }
// Free the memory used by the arg2 string.
if (0 != m_arg2) { WsbFree(m_arg2); m_arg2 = 0; }
// Let the parent class do his thing.
CWsbObject::FinalRelease(); }
HRESULT CHsmRelativeCriteria::GetArg1( OUT OLECHAR** pArg, IN ULONG bufferSize )
/*++
Implements:
IHsmRelativeCriteria::GetArg1().
--*/ { HRESULT hr = S_OK;
try { WsbAssert(0 != pArg, E_POINTER); WsbAffirmHr(WsbAllocAndCopyComString(pArg, m_arg1, bufferSize));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmRelativeCriteria::GetArg2( OUT OLECHAR** pArg, IN ULONG bufferSize )
/*++
Implements:
IHsmRelativeCriteria::GetArg2().
--*/ { HRESULT hr = S_OK;
try { WsbAssert(0 != pArg, E_POINTER); WsbAffirmHr(WsbAllocAndCopyComString(pArg, m_arg2, bufferSize));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmRelativeCriteria::GetComparator( OUT HSM_CRITERIACOMPARATOR* pComparator )
/*++
Implements:
IHsmRelativeCriteria::GetComparator().
--*/ { HRESULT hr = S_OK;
try { WsbAssert(0 != pComparator, E_POINTER); *pComparator = m_comparator;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmRelativeCriteria::GetSizeMax( OUT ULARGE_INTEGER* pSize )
/*++
Implements:
IPersistStream::GetSizeMax().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmRelativeCriteria::GetSizeMax"), OLESTR(""));
try { WsbAssert(0 != pSize, E_POINTER); pSize->QuadPart = WsbPersistSizeOf(GUID) + WsbPersistSizeOf(BOOL) + WsbPersistSizeOf(BOOL) + WsbPersistSize((wcslen(m_arg1) + 1) * sizeof(OLECHAR)) + WsbPersistSize((wcslen(m_arg2) + 1) * sizeof(OLECHAR));
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmRelativeCriteria::GetSizeMax"), OLESTR("hr = <%ls>, Size = <%ls>"), WsbHrAsString(hr), WsbPtrToUliAsString(pSize));
return(hr); }
HRESULT CHsmRelativeCriteria::Load( IN IStream* pStream )
/*++
Implements:
IPersistStream::Load().
--*/ { HRESULT hr = S_OK; CWsbStringPtr tmp;
WsbTraceIn(OLESTR("CHsmRelativeCriteria::Load"), OLESTR(""));
try {
WsbAssert(0 != pStream, E_POINTER);
WsbAffirmHr(WsbLoadFromStream(pStream, &m_nameId)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_isIgnored)); WsbAffirmHr(WsbLoadFromStream(pStream, &m_isNegated)); WsbAffirmHr(WsbLoadFromStream(pStream, &tmp, 0)); WsbAffirmHr(SetArg1(tmp)); WsbAffirmHr(WsbLoadFromStream(pStream, &tmp, 0)); WsbAffirmHr(SetArg2(tmp));
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmRelativeCriteria::Load"), OLESTR("hr = <%ls>, nameId = <%lu>"), WsbHrAsString(hr), m_nameId);
return(hr); }
HRESULT CHsmRelativeCriteria::Save( IN IStream* pStream, IN BOOL clearDirty )
/*++
Implements:
IPersistStream::Save().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmRelativeCriteria::Save"), OLESTR("clearDirty = <%ls>"), WsbBoolAsString(clearDirty)); try {
WsbAssert(0 != pStream, E_POINTER);
WsbAffirmHr(WsbSaveToStream(pStream, m_nameId)); WsbAffirmHr(WsbSaveToStream(pStream, m_isIgnored)); WsbAffirmHr(WsbSaveToStream(pStream, m_isNegated)); WsbAffirmHr(WsbSaveToStream(pStream, m_arg1)); WsbAffirmHr(WsbSaveToStream(pStream, m_arg2));
// 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("CHsmRelativeCriteria::Save"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmRelativeCriteria::SetArg1( IN OLECHAR* arg )
/*++
Implements:
IHsmRelativeCriteria::SetArg1().
--*/ { HRESULT hr = S_OK;
hr = WsbAllocAndCopyComString(&m_arg1, arg, 0);
return(hr); }
HRESULT CHsmRelativeCriteria::SetArg2( IN OLECHAR* arg )
/*++
Implements:
IHsmRelativeCriteria::SetArg2().
--*/ { HRESULT hr = S_OK;
hr = WsbAllocAndCopyComString(&m_arg2, arg, 0);
return(hr); }
HRESULT CHsmRelativeCriteria::SetComparator( IN HSM_CRITERIACOMPARATOR comparator )
/*++
Implements:
IHsmRelativeCriteria::SetComparator().
--*/ { m_comparator = comparator;
return(S_OK); }
HRESULT CHsmCritAlways::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITALWAYS_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritAlways::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritAlways::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritAlways;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritAlways::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritAlways::ShouldDo( IN IFsaScanItem* /*pScanItem*/, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritAlways::ShouldDo"), OLESTR(""));
hr = m_isNegated ? S_FALSE : S_OK;
WsbTraceOut(OLESTR("CHsmCritAlways::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); }
HRESULT CHsmCritAlways::Test( USHORT* passed, USHORT* failed )
/*++
Implements:
IWsbTestable::Test().
--*/ { HRESULT hr = S_OK; OLECHAR* name = 0;
try {
WsbAssert(0 != passed, E_POINTER); WsbAssert(0 != failed, E_POINTER);
*passed = 0; *failed = 0;
try { WsbAssertHr(GetName(&name, 0)); WsbAssert(wcscmp(name, OLESTR("Always")) == 0, E_FAIL); (*passed)++; } WsbCatchAndDo(hr, (*failed)++;);
} WsbCatch(hr);
if (0 != name) { WsbFree(name); }
return(hr); }
HRESULT CHsmCritAlways::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITALWAYS_VALUE_T, pValue, bufferSize);
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritCompressed::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITCOMPRESSED_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritCompressed::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritCompressed::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritAlways;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritCompressed::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritCompressed::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritCompressed::ShouldDo"), OLESTR(""));
try {
WsbAssert(0 != pScanItem, E_POINTER); hr = pScanItem->IsCompressed();
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritCompressed::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritCompressed::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
hr = pScanItem->IsCompressed();
if (S_OK == hr) { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITCOMPRESSED_VALUE_T, pValue, bufferSize); } else { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITCOMPRESSED_VALUE_F, pValue, bufferSize); }
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritLinked::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITLINKED_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritLinked::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritLinked::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritLinked;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritLinked::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritLinked::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritLinked::ShouldDo"), OLESTR(""));
try {
WsbAssert(0 != pScanItem, E_POINTER); hr = pScanItem->IsALink();
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritLinked::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritLinked::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
hr = pScanItem->IsALink();
if (S_OK == hr) { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITLINKED_VALUE_T, pValue, bufferSize); } else { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITLINKED_VALUE_F, pValue, bufferSize); }
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritMbit::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITMBIT_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritMbit::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritMbit::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritMbit;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritMbit::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritMbit::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritMbit::ShouldDo"), OLESTR(""));
try {
WsbAssert(0 != pScanItem, E_POINTER); hr = pScanItem->IsMbit();
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritMbit::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritMbit::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
hr = pScanItem->IsMbit();
if (S_OK == hr) { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITMBIT_VALUE_T, pValue, bufferSize); } else { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITMBIT_VALUE_F, pValue, bufferSize); }
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritManageable::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITMANAGEABLE_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritManageable::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritManageable::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritManageable;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritManageable::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritManageable::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK; LONGLONG size;
WsbTraceIn(OLESTR("CHsmCritManageable::ShouldDo"), OLESTR(""));
try {
WsbAssert(0 != pScanItem, E_POINTER);
WsbAffirmHr(pScanItem->GetLogicalSize(&size)); hr = pScanItem->IsManageable(0, size);
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritManageable::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritManageable::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; LONGLONG size; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
WsbAffirmHr(pScanItem->GetLogicalSize(&size)); hr = pScanItem->IsManageable(0, size);
if (S_OK == hr) { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITMANAGEABLE_VALUE_T, pValue, bufferSize); } else { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITMANAGEABLE_VALUE_F, pValue, bufferSize); }
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritMigrated::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITMIGRATED_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritMigrated::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritMigrated::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritMigrated;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritMigrated::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritMigrated::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK; LONGLONG size;
WsbTraceIn(OLESTR("CHsmCritMigrated::ShouldDo"), OLESTR(""));
try {
WsbAssert(0 != pScanItem, E_POINTER);
WsbAffirmHr(pScanItem->GetLogicalSize(&size)); hr = pScanItem->IsTruncated(0, size);
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritMigrated::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritMigrated::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; LONGLONG size; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
WsbAffirmHr(pScanItem->GetLogicalSize(&size)); hr = pScanItem->IsTruncated(0, size);
if (S_OK == hr) { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITMIGRATED_VALUE_T, pValue, bufferSize); } else { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITMIGRATED_VALUE_F, pValue, bufferSize); }
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritPremigrated::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITPREMIGRATED_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritPremigrated::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritPremigrated::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritPremigrated;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritPremigrated::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritPremigrated::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK; LONGLONG size;
WsbTraceIn(OLESTR("CHsmCritPremigrated::ShouldDo"), OLESTR(""));
try {
WsbAssert(0 != pScanItem, E_POINTER);
WsbAffirmHr(pScanItem->GetLogicalSize(&size)); hr = pScanItem->IsPremigrated(0, size);
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritPremigrated::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritPremigrated::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; LONGLONG size; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
WsbAffirmHr(pScanItem->GetLogicalSize(&size)); hr = pScanItem->IsPremigrated(0, size);
if (S_OK == hr) { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITPREMIGRATED_VALUE_T, pValue, bufferSize); } else { hr = WsbLoadComString(_Module.m_hInst, IDS_HSMCRITPREMIGRATED_VALUE_F, pValue, bufferSize); }
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritAccessTime::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmRelativeCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITACCESSTIME_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritAccessTime::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritAccessTime::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritAccessTime;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritAccessTime::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritAccessTime::SetArg1( IN OLECHAR* arg )
/*++
Implements:
IHsmCriteria::SetArg1().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(WsbWCStoFT(arg, &m_isRelative, &m_value1)); WsbAffirmHr(CHsmRelativeCriteria::SetArg1(arg));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritAccessTime::SetArg2( IN OLECHAR* arg )
/*++
Implements:
IHsmCriteria::SetArg2().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(WsbWCStoFT(arg, &m_isRelative, &m_value2)); WsbAffirmHr(CHsmRelativeCriteria::SetArg2(arg));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritAccessTime::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK; FILETIME time; FILETIME value1 = m_value1; FILETIME value2 = m_value2; LONG timeCompare1; LONG timeCompare2;
WsbTraceIn(OLESTR("CHsmCritAccessTime::ShouldDo"), OLESTR(""));
try {
WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != m_arg1, E_INVALIDARG);
// Get the time.
WsbAffirmHr(pScanItem->GetAccessTime(&time));
// If this is a relative time (i.e. and age), then we need
// to know the present time before we can do the comparrison.
if (m_isRelative) { FILETIME present;
WsbAffirmHr(CoFileTimeNow(&present));
value1 = WsbFtSubFt(present, m_value1); value2 = WsbFtSubFt(present, m_value2); }
// Compare the first arg.
timeCompare1 = CompareFileTime(&value1, &time);
// Now interpret the result based on the type of comparisson.
hr = S_FALSE; switch (m_comparator) {
default: case HSM_CRITERIACOMPARATOR_NOTSET: hr = E_INVALIDARG; break;
case HSM_CRITERIACOMPARATOR_LT: if (timeCompare1 < 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_LTE: if (timeCompare1 <= 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_EQL: if (timeCompare1 == 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_NEQL: if (timeCompare1 != 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GTE: if (timeCompare1 >= 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GT: if (timeCompare1 > 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_BETWEEN: WsbAssert(0 != m_arg2, E_INVALIDARG);
timeCompare2 = CompareFileTime(&value2, &time); if ((timeCompare1 >= 0) && (timeCompare2 <= 0)) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_OUTSIDE: WsbAssert(0 != m_arg2, E_INVALIDARG);
timeCompare2 = CompareFileTime(&value2, &time); if ((timeCompare1 < 0) || (timeCompare2 > 0)) { hr = S_OK; } break; }
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritAccessTime::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritAccessTime::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; FILETIME time; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
WsbAffirmHr(pScanItem->GetAccessTime(&time));
// If this is a relative time (i.e. and age), then we need
// to know the present time before we can do the comparrison.
if (m_isRelative) { FILETIME present;
WsbAffirmHr(CoFileTimeNow(&present)); time = WsbFtSubFt(present, time); }
hr = WsbFTtoWCS(m_isRelative, time, pValue, bufferSize);
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritGroup::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmRelativeCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITGROUP_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritGroup::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritGroup::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritGroup;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritGroup::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritGroup::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK; OLECHAR* group = 0; int stringCompare1; int stringCompare2;
WsbTraceIn(OLESTR("CHsmCritGroup::ShouldDo"), OLESTR("")); try {
// We at least need one argument to be able to do a comparisson.
WsbAssert(0 != m_arg1, E_INVALIDARG);
// Get the Group's name.
WsbAffirmHr(pScanItem->GetGroup(&group, 0));
hr = S_FALSE; stringCompare1 = wcscmp(m_arg1, group);
switch (m_comparator) { default: case HSM_CRITERIACOMPARATOR_NOTSET: hr = E_INVALIDARG; break;
case HSM_CRITERIACOMPARATOR_LT: if (stringCompare1 < 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_LTE: if (stringCompare1 <= 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_EQL: if (stringCompare1 == 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_NEQL: if (stringCompare1 != 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GTE: if (stringCompare1 >= 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GT: if (stringCompare1 > 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_BETWEEN: WsbAssert( 0 != m_arg2, E_INVALIDARG);
stringCompare2 = wcscmp(m_arg2, group); if ((stringCompare1 >= 0) && (stringCompare2 <= 0)) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_OUTSIDE: WsbAssert( 0 != m_arg2, E_INVALIDARG);
stringCompare2 = wcscmp(m_arg2, group); if ((stringCompare1 < 0) || (stringCompare2 > 0)) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_MEMBEROF: hr = pScanItem->IsGroupMemberOf(m_arg1); break; }
WsbFree(group);
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritGroup::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritGroup::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
WsbAffirmHr(pScanItem->GetGroup(pValue, bufferSize));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritLogicalSize::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmRelativeCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITLOGICALSIZE_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritLogicalSize::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritLogicalSize::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritLogicalSize;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritLogicalSize::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritLogicalSize::SetArg1( IN OLECHAR* arg )
/*++
Implements:
IHsmCriteria::SetArg2().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(WsbWCStoLL(arg, &m_value1)); WsbAffirmHr(CHsmRelativeCriteria::SetArg1(arg));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritLogicalSize::SetArg2( IN OLECHAR* arg )
/*++
Implements:
IHsmCriteria::SetArg2().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(WsbWCStoLL(arg, &m_value2)); WsbAffirmHr(CHsmRelativeCriteria::SetArg2(arg));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritLogicalSize::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK; LONGLONG size;
WsbTraceIn(OLESTR("CHsmCritLogicalSize::ShouldDo"), OLESTR("")); try {
// We at least need one argument to be able to do a comparisson.
WsbAssert(0 != m_arg1, E_INVALIDARG);
// Get the size.
WsbAffirmHr(pScanItem->GetLogicalSize(&size));
// See how it compares.
hr = S_FALSE;
switch (m_comparator) {
default: case HSM_CRITERIACOMPARATOR_NOTSET: hr = E_INVALIDARG; break;
case HSM_CRITERIACOMPARATOR_LT: if (size < m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_LTE: if (size <= m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_EQL: if (size == m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_NEQL: if (size != m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GTE: if (size >= m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GT: if (size > m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_BETWEEN: WsbAssert(0 != m_arg2, E_INVALIDARG);
if ((m_value1 <= size) && (size <= m_value2)) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_OUTSIDE: WsbAssert(0 != m_arg2, E_INVALIDARG);
if ((size < m_value1) || (m_value2 > size)) { hr = S_OK; }
break; }
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritLogicalSize::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritLogicalSize::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; LONGLONG size; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
WsbAffirmHr(pScanItem->GetLogicalSize(&size)); WsbAffirmHr(WsbLLtoWCS(size, pValue, bufferSize));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritModifyTime::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmRelativeCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITMODIFYTIME_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritModifyTime::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritModifyTime::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritModifyTime;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritModifyTime::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritModifyTime::SetArg1( IN OLECHAR* arg )
/*++
Implements:
IHsmCriteria::SetArg1().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(WsbWCStoFT(arg, &m_isRelative, &m_value1)); WsbAffirmHr(CHsmRelativeCriteria::SetArg1(arg));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritModifyTime::SetArg2( IN OLECHAR* arg )
/*++
Implements:
IHsmCriteria::SetArg2().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(WsbWCStoFT(arg, &m_isRelative, &m_value2)); WsbAffirmHr(CHsmRelativeCriteria::SetArg2(arg));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritModifyTime::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK; FILETIME time; FILETIME value1 = m_value1; FILETIME value2 = m_value2; LONG timeCompare1; LONG timeCompare2;
WsbTraceIn(OLESTR("CHsmCritModifyTime::ShouldDo"), OLESTR(""));
try {
WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != m_arg1, E_INVALIDARG);
// Get the time.
WsbAffirmHr(pScanItem->GetModifyTime(&time));
// If this is a relative time (i.e. and age), then we need
// to know the present time before we can do the comparrison.
if (m_isRelative) { FILETIME present;
WsbAffirmHr(CoFileTimeNow(&present));
value1 = WsbFtSubFt(present, m_value1); value2 = WsbFtSubFt(present, m_value2); }
// Compare the first arg.
timeCompare1 = CompareFileTime(&value1, &time);
// Now interpret the result based on the type of comparisson.
hr = S_FALSE; switch (m_comparator) {
default: case HSM_CRITERIACOMPARATOR_NOTSET: hr = E_INVALIDARG; break;
case HSM_CRITERIACOMPARATOR_LT: if (timeCompare1 < 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_LTE: if (timeCompare1 <= 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_EQL: if (timeCompare1 == 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_NEQL: if (timeCompare1 != 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GTE: if (timeCompare1 >= 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GT: if (timeCompare1 > 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_BETWEEN: WsbAssert(0 != m_arg2, E_INVALIDARG);
timeCompare2 = CompareFileTime(&value2, &time); if ((timeCompare1 >= 0) && (timeCompare2 <= 0)) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_OUTSIDE: WsbAssert(0 != m_arg2, E_INVALIDARG);
timeCompare2 = CompareFileTime(&value2, &time); if ((timeCompare1 < 0) || (timeCompare2 > 0)) { hr = S_OK; } break; }
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritModifyTime::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritModifyTime::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; FILETIME time; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
WsbAffirmHr(pScanItem->GetModifyTime(&time));
// If this is a relative time (i.e. and age), then we need
// to know the present time before we can do the comparrison.
if (m_isRelative) { FILETIME present;
WsbAffirmHr(CoFileTimeNow(&present)); time = WsbFtSubFt(present, time); }
hr = WsbFTtoWCS(m_isRelative, time, pValue, bufferSize);
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritOwner::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmRelativeCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITOWNER_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritOwner::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritOwner::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritOwner;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritOwner::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritOwner::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK; OLECHAR* owner = 0; int stringCompare1; int stringCompare2;
WsbTraceIn(OLESTR("CHsmCritOwner::ShouldDo"), OLESTR("")); try {
// We at least need one argument to be able to do a comparisson.
WsbAssert(0 != m_arg1, E_INVALIDARG);
// Get the Group's name.
WsbAffirmHr(pScanItem->GetOwner(&owner, 0));
hr = S_FALSE; stringCompare1 = wcscmp(m_arg1, owner);
switch (m_comparator) { default: case HSM_CRITERIACOMPARATOR_NOTSET: hr = E_INVALIDARG; break;
case HSM_CRITERIACOMPARATOR_LT: if (stringCompare1 < 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_LTE: if (stringCompare1 <= 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_EQL: if (stringCompare1 == 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_NEQL: if (stringCompare1 != 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GTE: if (stringCompare1 >= 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GT: if (stringCompare1 > 0) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_BETWEEN: WsbAssert( 0 != m_arg2, E_INVALIDARG);
stringCompare2 = wcscmp(m_arg2, owner); if ((stringCompare1 >= 0) && (stringCompare2 <= 0)) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_OUTSIDE: WsbAssert( 0 != m_arg2, E_INVALIDARG);
stringCompare2 = wcscmp(m_arg2, owner); if ((stringCompare1 < 0) || (stringCompare2 > 0)) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_MEMBEROF: hr = pScanItem->IsOwnerMemberOf(m_arg1); break; }
WsbFree(owner);
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritOwner::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritOwner::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
WsbAffirmHr(pScanItem->GetOwner(pValue, bufferSize));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritPhysicalSize::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(CHsmRelativeCriteria::FinalConstruct()); m_nameId = IDS_HSMCRITPHYSICALSIZE_ID;
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritPhysicalSize::GetClassID( OUT CLSID* pClsid )
/*++
Implements:
IPersist::GetClassID().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmCritPhysicalSize::GetClassID"), OLESTR(""));
try {
WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmCritPhysicalSize;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritPhysicalSize::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid));
return(hr); }
HRESULT CHsmCritPhysicalSize::SetArg1( IN OLECHAR* arg )
/*++
Implements:
IHsmCriteria::SetArg2().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(WsbWCStoLL(arg, &m_value1)); WsbAffirmHr(CHsmRelativeCriteria::SetArg1(arg));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritPhysicalSize::SetArg2( IN OLECHAR* arg )
/*++
Implements:
IHsmCriteria::SetArg2().
--*/ { HRESULT hr = S_OK; try {
WsbAffirmHr(WsbWCStoLL(arg, &m_value2)); WsbAffirmHr(CHsmRelativeCriteria::SetArg2(arg));
} WsbCatch(hr);
return(hr); }
HRESULT CHsmCritPhysicalSize::ShouldDo( IN IFsaScanItem* pScanItem, IN USHORT /*scale*/ )
/*++
Implements:
IHsmCriteria::ShouldDo().
--*/ { HRESULT hr = S_OK; LONGLONG size;
WsbTraceIn(OLESTR("CHsmCritPhysicalSize::ShouldDo"), OLESTR("")); try {
// We at least need one argument to be able to do a comparisson.
WsbAssert(0 != m_arg1, E_INVALIDARG);
// Get the size.
WsbAffirmHr(pScanItem->GetPhysicalSize(&size));
// See how it compares.
hr = S_FALSE;
switch (m_comparator) {
default: case HSM_CRITERIACOMPARATOR_NOTSET: hr = E_INVALIDARG; break;
case HSM_CRITERIACOMPARATOR_LT: if (size < m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_LTE: if (size <= m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_EQL: if (size == m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_NEQL: if (size != m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GTE: if (size >= m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_GT: if (size > m_value1) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_BETWEEN: WsbAssert(0 != m_arg2, E_INVALIDARG);
if ((m_value1 <= size) && (size <= m_value2)) { hr = S_OK; } break;
case HSM_CRITERIACOMPARATOR_OUTSIDE: WsbAssert(0 != m_arg2, E_INVALIDARG);
if ((size < m_value1) || (m_value2 > size)) { hr = S_OK; }
break; }
if (SUCCEEDED(hr) && m_isNegated) { if (S_OK == hr) { hr = S_FALSE; } else { hr = S_OK; } }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmCritPhysicalSize::ShouldDo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmCritPhysicalSize::Value( IN IFsaScanItem* pScanItem, OUT OLECHAR** pValue, IN ULONG bufferSize )
/*++
Implements:
IHsmCriteria::Value().
--*/ { HRESULT hr = S_OK; LONGLONG size; try { WsbAssert(0 != pScanItem, E_POINTER); WsbAssert(0 != pValue, E_POINTER);
WsbAffirmHr(pScanItem->GetPhysicalSize(&size)); WsbAffirmHr(WsbLLtoWCS(size, pValue, bufferSize));
} WsbCatch(hr);
return(hr); }
|