You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
4.9 KiB
196 lines
4.9 KiB
/*++
|
|
|
|
© 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);
|
|
}
|