Пример #1
0
HRESULT CServiceModule::InitAGC()
{
	// Initialize AGC
	HRESULT hr;
	ZSucceeded(hr = _AGCModule.Init());
	RETURN_FAILED(hr);

	_AGCModule.SetDebugBreakOnErrors(g.fWantInt3);

#ifdef _DEBUG
	_AGCModule.GetAGCGlobal()->SetDebugHook(&g_DebugHook);
#endif // _DEBUG

	// Create the set of available AGCEventID ranges
	CComPtr<IAGCEventIDRanges> spRanges;
	ZSucceeded(hr = spRanges.CoCreateInstance(L"AGC.EventIDRanges"));
	RETURN_FAILED(hr);

	// Add our ranges to it
	ZSucceeded(spRanges->AddByValues(EventID_AGC_LowerBound, EventID_AGC_UpperBound));
	ZSucceeded(spRanges->AddByValues(AllsrvEventID_Allsrv_LowerBound, AllsrvEventID_Allsrv_UpperBound));
	ZSucceeded(spRanges->AddByValues(EventID_Admin_LowerBound, EventID_Admin_UpperBound));

	// Set the ranges of available events
	GetAGCGlobal()->SetAvailableEventIDRanges(spRanges);

	// Create the event logger object
	ZSucceeded(hr = m_spEventLogger.CreateInstance("AGC.EventLogger"));
	RETURN_FAILED(hr);

	// Initialize the event logger object
	CComBSTR bstrEventSource(__MODULE__);
	CComBSTR bstrRegKey("HKLM\\" HKLM_FedSrvA);
	IAGCEventLoggerPrivatePtr spPrivate(m_spEventLogger);
	hr = spPrivate->Initialize(bstrEventSource, bstrRegKey);
	ZSucceeded(hr);
	RETURN_FAILED(hr);

	// Hook the event logger for DB event logging
	ZSucceeded(hr = spPrivate->put_HookForDBLogging(&g_DBLoggingHook));

	// Indicate success
	return S_OK;
}