197 lines
4.7 KiB
C++
197 lines
4.7 KiB
C++
|
/*++
|
|||
|
|
|||
|
<EFBFBD> 1998 Seagate Software, Inc. All rights reserved.
|
|||
|
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
hsmdeflt.cpp
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This component is an provides functions to access the HSM
|
|||
|
default settings. These settings are maintained in the
|
|||
|
NT system registry.
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Cat Brant [cbrant] 13-Jan-1997
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
#include "stdafx.h"
|
|||
|
#include "wsb.h"
|
|||
|
#include "HsmEng.h"
|
|||
|
#include "HsmServ.h"
|
|||
|
#include "HsmConn.h"
|
|||
|
#include "job.h"
|
|||
|
#include "engine.h"
|
|||
|
|
|||
|
#define WSB_TRACE_IS WSB_TRACE_BIT_HSMENG
|
|||
|
|
|||
|
enum HSM_PARM_SETTING_VISIBILITY {
|
|||
|
HSM_PARM_PERSISTANT = 1, // Always seen in the registry
|
|||
|
HSM_PARM_INVISIBLE = 2 // Only written if different from the default
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
HRESULT
|
|||
|
CHsmServer::CreateDefaultJobs(
|
|||
|
void
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Creates the default jobs and adds them to the engine's data base.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
None
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
S_OK:
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
|
|||
|
HRESULT hr = S_OK;
|
|||
|
CComPtr<IHsmJob> pJob;
|
|||
|
CComPtr<IHsmStoragePool> pStoragePool;
|
|||
|
GUID storagePoolId;
|
|||
|
|
|||
|
WsbTraceIn(OLESTR("CHsmServer::CreateDefaultJobs"),OLESTR(""));
|
|||
|
|
|||
|
try {
|
|||
|
|
|||
|
// Currently the only default job is the manage job.
|
|||
|
if (FindJobByName(HSM_DEFAULT_MANAGE_JOB_NAME, &pJob) == WSB_E_NOTFOUND) {
|
|||
|
|
|||
|
// The manage job needs a storage pool, so make sure that one exists.
|
|||
|
hr = m_pStoragePools->First(IID_IHsmStoragePool, (void**) &pStoragePool);
|
|||
|
|
|||
|
if (hr == WSB_E_NOTFOUND) {
|
|||
|
WsbAffirmHr(CoCreateInstance(CLSID_CHsmStoragePool, 0, CLSCTX_ALL, IID_IHsmStoragePool, (void**) &pStoragePool));
|
|||
|
WsbAffirmHr(pStoragePool->SetMediaSet(GUID_NULL, OLESTR("Default")));
|
|||
|
WsbAssertHr(m_pStoragePools->Add(pStoragePool));
|
|||
|
//
|
|||
|
// Since we added one, save the data
|
|||
|
//
|
|||
|
WsbAffirmHr(SavePersistData());
|
|||
|
hr = S_OK;
|
|||
|
}
|
|||
|
|
|||
|
WsbAffirmHr(hr);
|
|||
|
WsbAssertHr(pStoragePool->GetId(&storagePoolId));
|
|||
|
|
|||
|
// Create a new job, configure it as a default manage job, and add it
|
|||
|
// to the job collection.
|
|||
|
WsbAffirmHr(CoCreateInstance(CLSID_CHsmJob, 0, CLSCTX_ALL, IID_IHsmJob, (void**) &pJob));
|
|||
|
WsbAffirmHr(pJob->InitAs(HSM_DEFAULT_MANAGE_JOB_NAME, 0, HSM_JOB_DEF_TYPE_MANAGE, storagePoolId, (IHsmServer*) this, FALSE, 0));
|
|||
|
WsbAffirmHr(m_pJobs->Add(pJob));
|
|||
|
}
|
|||
|
|
|||
|
} WsbCatch(hr);
|
|||
|
|
|||
|
WsbTraceOut(OLESTR("CHsmServer::CreateDefaultJobs"), OLESTR("hr = <%ls>"),WsbHrAsString(hr));
|
|||
|
|
|||
|
return(hr);
|
|||
|
}
|
|||
|
|
|||
|
HRESULT
|
|||
|
CHsmServer::GetSavedTraceSettings(
|
|||
|
LONGLONG* pTraceSettings,
|
|||
|
BOOLEAN *pTraceOn
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Loads the settings for the HSM engine trace
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
None
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
S_OK: The value was obtained
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
|
|||
|
HRESULT hr = S_OK;
|
|||
|
|
|||
|
WsbTraceIn(OLESTR("CHsmServer::GetSavedTraceSettings"),OLESTR(""));
|
|||
|
|
|||
|
try {
|
|||
|
DWORD sizeGot;
|
|||
|
OLECHAR dataString[100];
|
|||
|
OLECHAR *stopString;
|
|||
|
//
|
|||
|
// Get the values
|
|||
|
//
|
|||
|
WsbAffirmHr(WsbGetRegistryValueString(NULL, HSM_ENGINE_REGISTRY_STRING, HSM_TRACE_SETTINGS,
|
|||
|
dataString, 100, &sizeGot));
|
|||
|
*pTraceSettings = wcstoul( dataString, &stopString, 10 );
|
|||
|
|
|||
|
WsbAffirmHr(WsbGetRegistryValueString(NULL, HSM_ENGINE_REGISTRY_STRING, HSM_TRACE_ON,
|
|||
|
dataString, 100, &sizeGot));
|
|||
|
*pTraceOn = (BOOLEAN) wcstoul( dataString, &stopString, 10 );
|
|||
|
|
|||
|
|
|||
|
} WsbCatch(hr);
|
|||
|
|
|||
|
WsbTraceOut(OLESTR("CHsmServer::GetSavedTraceSettings"), OLESTR("hr = <%ls>"),WsbHrAsString(hr));
|
|||
|
|
|||
|
return(hr);
|
|||
|
}
|
|||
|
|
|||
|
HRESULT
|
|||
|
CHsmServer::SetSavedTraceSettings(
|
|||
|
LONGLONG traceSettings,
|
|||
|
BOOLEAN traceOn
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Saves the settings for trace in the NT registry.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
None
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
S_OK: The value was obtained
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
|
|||
|
HRESULT hr = S_OK;
|
|||
|
|
|||
|
WsbTraceIn(OLESTR("CHsmServer::SetSavedTraceSettings"),OLESTR(""));
|
|||
|
|
|||
|
try {
|
|||
|
OLECHAR dataString[64];
|
|||
|
//
|
|||
|
// Save the Saved value
|
|||
|
//
|
|||
|
swprintf(dataString, OLESTR("%l64x"), traceSettings);
|
|||
|
WsbAffirmHr(WsbSetRegistryValueString(NULL, HSM_ENGINE_REGISTRY_STRING, HSM_TRACE_SETTINGS,
|
|||
|
dataString));
|
|||
|
swprintf(dataString, OLESTR("%d"), traceOn);
|
|||
|
WsbAffirmHr(WsbSetRegistryValueString(NULL, HSM_ENGINE_REGISTRY_STRING, HSM_TRACE_ON,
|
|||
|
dataString));
|
|||
|
} WsbCatch(hr);
|
|||
|
|
|||
|
WsbTraceOut(OLESTR("CHsmServer::SetSavedTraceSettings"), OLESTR("hr = <%ls>"),WsbHrAsString(hr));
|
|||
|
|
|||
|
return(hr);
|
|||
|
}
|