987 lines
53 KiB
C++
987 lines
53 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1994 - 1998.
|
|
//
|
|
// File: params.cxx
|
|
//
|
|
// Contents: CCiRegParams class
|
|
//
|
|
// History: 29-Jul-94 DwightKr Created
|
|
// 14-Api-96 DwightKr Added default Isapi catalog directory
|
|
// 11-Oct-96 dlee collapsed kernel+user, added override
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#include <pch.cxx>
|
|
#pragma hdrstop
|
|
|
|
#include <ciregkey.hxx>
|
|
#include <regacc.hxx>
|
|
#include <ciintf.h>
|
|
#include <cifrmcom.hxx>
|
|
|
|
|
|
const WCHAR * IS_DEFAULT_CATALOG_DIRECTORY = L"C:\\";
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Member: CCiRegParams::CCiRegParams, public
|
|
//
|
|
// Synopsis: Constructor for registry param object
|
|
//
|
|
// Arguments: [pwcName] - 0 or name of the catalog from the registry
|
|
//
|
|
// History: 12-Oct-96 dlee Created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
CCiRegParams::CCiRegParams( const WCHAR * pwcName )
|
|
{
|
|
_CheckNamedValues();
|
|
|
|
SetDefault();
|
|
|
|
// If a name isn't passed, then the catalog wasn't listed in the registry
|
|
// to begin with, so we can't override the registry params.
|
|
|
|
if ( 0 != pwcName )
|
|
{
|
|
_xOverrideName.Init( wcslen( pwcName ) + 1 );
|
|
RtlCopyMemory( _xOverrideName.Get(),
|
|
pwcName,
|
|
_xOverrideName.SizeOf() );
|
|
}
|
|
|
|
Refresh( );
|
|
} //CCiRegParams
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Member: CCiRegParams::_OverrideForCatalog, private
|
|
//
|
|
// Synopsis: Overrides registry parameters with those for a given catalog
|
|
//
|
|
// History: 12-Oct-96 dlee Created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void CCiRegParams::_OverrideForCatalog()
|
|
{
|
|
// override values under ContentIndex with those for this catalog
|
|
|
|
if ( 0 != _xOverrideName.Get() )
|
|
{
|
|
unsigned cwcNeeded = wcslen( wcsRegJustCatalogsSubKey );
|
|
cwcNeeded += 2; // "\\" + null termination
|
|
cwcNeeded += wcslen( _xOverrideName.Get() );
|
|
|
|
XArray<WCHAR> xKey( cwcNeeded );
|
|
wcscpy( xKey.Get(), wcsRegJustCatalogsSubKey );
|
|
wcscat( xKey.Get(), L"\\" );
|
|
wcscat( xKey.Get(), _xOverrideName.Get() );
|
|
|
|
ciDebugOut(( DEB_ITRACE, "overriding for catalog key '%ws'\n",
|
|
xKey.Get() ));
|
|
|
|
CRegAccess reg( RTL_REGISTRY_CONTROL, xKey.Get() );
|
|
|
|
ciDebugOut(( DEB_ITRACE, "before: generate 0x%x, index w3 0x%x\n",
|
|
_maxCharacterization, _fIsIndexingW3Roots ));
|
|
|
|
_ReadAndOverrideValues( reg );
|
|
|
|
ciDebugOut(( DEB_ITRACE, "after: generate 0x%x, index w3 0x%x\n",
|
|
_maxCharacterization, _fIsIndexingW3Roots ));
|
|
}
|
|
} //_OverrideForCatalog
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Member: CCiRegVars::SetDefault, public
|
|
//
|
|
// Synopsis: Sets default values for registry params
|
|
//
|
|
// History: 12-Oct-96 dlee Added header
|
|
// 04-Feb-98 kitmanh Added entry for _fIsReadOnly
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void CCiRegVars::SetDefault()
|
|
{
|
|
_useOle = TRUE;
|
|
_filterContents = FALSE;
|
|
_filterDelayInterval = CI_FILTER_DELAY_INTERVAL_DEFAULT;
|
|
_filterRemainingThreshold = CI_FILTER_REMAINING_THRESHOLD_DEFAULT;
|
|
_maxFilesizeFiltered = CI_MAX_FILESIZE_FILTERED_DEFAULT;
|
|
_masterMergeTime = CI_MASTER_MERGE_TIME_DEFAULT;
|
|
_maxFilesizeMultiplier = CI_MAX_FILESIZE_MULTIPLIER_DEFAULT;
|
|
_threadPriorityFilter = CI_THREAD_PRIORITY_FILTER_DEFAULT;
|
|
_threadClassFilter = CI_THREAD_CLASS_FILTER_DEFAULT;
|
|
_daemonResponseTimeout = CI_DAEMON_RESPONSE_TIMEOUT_DEFAULT;
|
|
_maxCharacterization = CI_MAX_CHARACTERIZATION_DEFAULT;
|
|
_fIsAutoAlias = CI_IS_AUTO_ALIAS_DEFAULT;
|
|
_maxAutoAliasRefresh = CI_MAX_AUTO_ALIAS_REFRESH_DEFAULT;
|
|
_fIsIndexingW3Roots = CI_IS_INDEXING_W3_ROOTS_DEFAULT;
|
|
_fIsIndexingNNTPRoots = CI_IS_INDEXING_NNTP_ROOTS_DEFAULT;
|
|
_fIsIndexingIMAPRoots = CI_IS_INDEXING_IMAP_ROOTS_DEFAULT;
|
|
_fIsReadOnly = CI_IS_READ_ONLY_DEFAULT; //default is "not" READ_ONLY
|
|
_fIsEnumAllowed = CI_IS_ENUM_ALLOWED_DEFAULT ;
|
|
_fFilterDirectories = CI_FILTER_DIRECTORIES_DEFAULT;
|
|
_fFilterFilesWithUnknownExtensions = CI_FILTER_FILES_WITH_UNKNOWN_EXTENSIONS_DEFAULT;
|
|
_fCatalogInactive = CI_CATALOG_INACTIVE_DEFAULT;
|
|
_fForcePathAlias = CI_FORCE_PATH_ALIAS_DEFAULT;
|
|
_maxPropertyStoreMappedCache = CI_PROPERTY_STORE_MAPPED_CACHE_DEFAULT;
|
|
_maxPropertyStoreBackupSize = CI_PROPERTY_STORE_BACKUP_SIZE_DEFAULT;
|
|
_maxSecPropertyStoreMappedCache = CI_PROPERTY_STORE_MAPPED_CACHE_DEFAULT;
|
|
_maxSecPropertyStoreBackupSize = CI_PROPERTY_STORE_BACKUP_SIZE_DEFAULT;
|
|
_forcedNetPathScanInterval = CI_FORCED_NETPATH_SCAN_DEFAULT;
|
|
|
|
_maxMergeInterval = CI_MAX_MERGE_INTERVAL_DEFAULT;
|
|
_threadPriorityMerge = CI_THREAD_PRIORITY_MERGE_DEFAULT;
|
|
_maxUpdates = CI_MAX_UPDATES_DEFAULT;
|
|
_maxWordlists = CI_MAX_WORDLISTS_DEFAULT;
|
|
_minSizeMergeWordlist = CI_MIN_SIZE_MERGE_WORDLISTS_DEFAULT;
|
|
_maxWordlistSize = CI_MAX_WORDLIST_SIZE_DEFAULT;
|
|
_minWordlistMemory = CI_MIN_WORDLIST_MEMORY_DEFAULT;
|
|
_maxWordlistIo = CI_MAX_WORDLIST_IO_DEFAULT;
|
|
_maxWordlistIoDiskPerf = CI_MAX_WORDLIST_IO_DISKPERF_DEFAULT;
|
|
_minWordlistBattery = CI_MIN_WORDLIST_BATTERY_DEFAULT;
|
|
_ResourceCheckInterval = CI_WORDLIST_RESOURCE_CHECK_INTERVAL_DEFAULT;
|
|
_maxFreshDeletes = CI_MAX_FRESH_DELETES_DEFAULT;
|
|
_lowResourceSleep = CI_LOW_RESOURCE_SLEEP_DEFAULT;
|
|
_maxWordlistMemoryLoad = CI_MAX_WORDLIST_MEMORY_LOAD_DEFAULT;
|
|
_maxFreshCount = CI_MAX_FRESHCOUNT_DEFAULT;
|
|
_maxQueueChunks = CI_MAX_QUEUE_CHUNKS_DEFAULT;
|
|
_masterMergeCheckpointInterval = CI_MASTER_MERGE_CHECKPOINT_INTERVAL_DEFAULT;
|
|
_filterBufferSize = CI_FILTER_BUFFER_SIZE_DEFAULT;
|
|
_filterRetries = CI_FILTER_RETRIES_DEFAULT;
|
|
_filterRetryInterval = CI_FILTER_RETRY_INTERVAL_DEFAULT;
|
|
_maxShadowIndexSize = CI_MAX_SHADOW_INDEX_SIZE_DEFAULT;
|
|
_minDiskFreeForceMerge = CI_MIN_DISKFREE_FORCE_MERGE_DEFAULT;
|
|
_maxShadowFreeForceMerge = CI_MAX_SHADOW_FREE_FORCE_MERGE_DEFAULT;
|
|
_maxIndexes = CI_MAX_INDEXES_DEFAULT;
|
|
_maxIdealIndexes = CI_MAX_IDEAL_INDEXES_DEFAULT;
|
|
_minMergeIdleTime = CI_MIN_MERGE_IDLE_TIME_DEFAULT;
|
|
_maxPendingDocuments = CI_MAX_PENDING_DOCUMENTS_DEFAULT;
|
|
_minIdleQueryThreads = CI_MIN_IDLE_QUERY_THREADS_DEFAULT;
|
|
_maxActiveQueryThreads = CI_MAX_ACTIVE_QUERY_THREADS_DEFAULT;
|
|
_maxQueryTimeslice = CI_MAX_QUERY_TIMESLICE_DEFAULT;
|
|
_maxQueryExecutionTime = CI_MAX_QUERY_EXECUTION_TIME_DEFAULT;
|
|
_maxRestrictionNodes = CI_MAX_RESTRICTION_NODES_DEFAULT;
|
|
_minIdleRequestThreads = CI_MIN_IDLE_REQUEST_THREADS_DEFAULT;
|
|
_minClientIdleTime = CI_MIN_CLIENT_IDLE_TIME;
|
|
_maxActiveRequestThreads = CI_MAX_ACTIVE_REQUEST_THREADS_DEFAULT;
|
|
_maxSimultaneousRequests = CI_MAX_SIMULTANEOUS_REQUESTS_DEFAULT;
|
|
_maxCachedPipes = CI_MAX_CACHED_PIPES_DEFAULT;
|
|
_requestTimeout = CI_REQUEST_TIMEOUT_DEFAULT;
|
|
_W3SvcInstance = CI_W3SVC_INSTANCE_DEFAULT;
|
|
_NNTPSvcInstance = CI_NNTPSVC_INSTANCE_DEFAULT;
|
|
_IMAPSvcInstance = CI_IMAPSVC_INSTANCE_DEFAULT;
|
|
_fMinimizeWorkingSet = CI_MINIMIZE_WORKINGSET_DEFAULT;
|
|
|
|
_evtLogFlags = CI_EVTLOG_FLAGS_DEFAULT;
|
|
_miscCiFlags = CI_MISC_FLAGS_DEFAULT;
|
|
_ciCatalogFlags = CI_FLAGS_DEFAULT;
|
|
_maxUsnLogSize = CI_MAX_USN_LOG_SIZE_DEFAULT;
|
|
_usnLogAllocationDelta = CI_USN_LOG_ALLOCATION_DELTA_DEFAULT;
|
|
_ulScanBackoff = CI_SCAN_BACKOFF_DEFAULT;
|
|
_ulStartupDelay = CI_STARTUP_DELAY_DEFAULT;
|
|
_ulUsnReadTimeout = CI_USN_READ_TIMEOUT_DEFAULT;
|
|
_ulUsnReadMinSize = CI_USN_READ_MIN_SIZE_DEFAULT;
|
|
_fDelayUsnReadOnLowResource = CI_DELAY_USN_READ_ON_LOW_RESOURCE_DEFAULT;
|
|
_maxDaemonVmUse = CI_MAX_DAEMON_VM_USE_DEFAULT;
|
|
_secQFilterRetries = CI_SECQ_FILTER_RETRIES_DEFAULT;
|
|
_ulStompLastAccessDelay = CI_STOMP_LAST_ACCESS_DELAY_DEFAULT;
|
|
_WordlistUserIdle = CI_WORDLIST_USER_IDLE_DEFAULT;
|
|
_minDiskSpaceToLeave = CI_MIN_DISK_SPACE_TO_LEAVE_DEFAULT;
|
|
} //SetDefault
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Member: CCiRegParams::_ReadAndOverrideValues, private
|
|
//
|
|
// Synopsis: Attempts to read values, with the default being the current
|
|
// value.
|
|
//
|
|
// History: 12-Oct-96 dlee created
|
|
// 04-Feb-98 kitmanh added entry for _fIsReadOnly
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void CCiRegParams::_ReadAndOverrideValues( CRegAccess & reg )
|
|
{
|
|
CCiRegVars newVals;
|
|
|
|
newVals._useOle = reg.Read(wcsUseOle, _useOle );
|
|
newVals._filterContents = reg.Read(wcsFilterContents, _filterContents );
|
|
newVals._filterDelayInterval = reg.Read(wcsFilterDelayInterval, _filterDelayInterval );
|
|
newVals._filterRemainingThreshold = reg.Read(wcsFilterRemainingThreshold, _filterRemainingThreshold );
|
|
newVals._maxFilesizeFiltered = reg.Read(wcsMaxFilesizeFiltered, (ULONG) _maxFilesizeFiltered);
|
|
newVals._masterMergeTime = reg.Read(wcsMasterMergeTime, _masterMergeTime );
|
|
newVals._maxFilesizeMultiplier = reg.Read(wcsMaxFilesizeMultiplier, _maxFilesizeMultiplier );
|
|
newVals._threadClassFilter = reg.Read(wcsThreadClassFilter, _threadClassFilter );
|
|
newVals._threadPriorityFilter = reg.Read(wcsThreadPriorityFilter, _threadPriorityFilter );
|
|
newVals._daemonResponseTimeout = reg.Read(wcsDaemonResponseTimeout, _daemonResponseTimeout );
|
|
newVals._maxCharacterization = reg.Read(wcsMaxCharacterization, _maxCharacterization );
|
|
|
|
//
|
|
// Allow old behavior.
|
|
//
|
|
|
|
ULONG ulgenerateCharacterization = reg.Read(wcsGenerateCharacterization, GetGenerateCharacterization() ? 1 : 0 );
|
|
|
|
if ( 0 == ulgenerateCharacterization )
|
|
newVals._maxCharacterization = 0;
|
|
|
|
newVals._fIsAutoAlias = reg.Read(wcsIsAutoAlias, _fIsAutoAlias );
|
|
newVals._maxAutoAliasRefresh = reg.Read(wcsMaxAutoAliasRefresh, _maxAutoAliasRefresh );
|
|
newVals._fIsIndexingW3Roots = reg.Read(wcsIsIndexingW3Roots, _fIsIndexingW3Roots );
|
|
newVals._fIsIndexingNNTPRoots = reg.Read(wcsIsIndexingNNTPRoots, _fIsIndexingNNTPRoots );
|
|
newVals._fIsIndexingIMAPRoots = reg.Read(wcsIsIndexingIMAPRoots, _fIsIndexingIMAPRoots );
|
|
newVals._fIsReadOnly = reg.Read(wcsIsReadOnly, _fIsReadOnly );
|
|
newVals._fIsEnumAllowed = reg.Read(wcsIsEnumAllowed, _fIsEnumAllowed);
|
|
newVals._fFilterDirectories = reg.Read(wcsFilterDirectories, _fFilterDirectories );
|
|
newVals._fFilterFilesWithUnknownExtensions = reg.Read(wcsFilterFilesWithUnknownExtensions, _fFilterFilesWithUnknownExtensions );
|
|
newVals._fCatalogInactive = reg.Read(wcsCatalogInactive, _fCatalogInactive );
|
|
newVals._fForcePathAlias = reg.Read(wcsForcePathAlias, _fForcePathAlias );
|
|
newVals._maxPropertyStoreMappedCache = reg.Read(wcsPrimaryStoreMappedCache, _maxPropertyStoreMappedCache );
|
|
newVals._maxPropertyStoreBackupSize = reg.Read(wcsPrimaryStoreBackupSize, _maxPropertyStoreBackupSize);
|
|
newVals._maxSecPropertyStoreMappedCache= reg.Read(wcsSecondaryStoreMappedCache, _maxSecPropertyStoreMappedCache );
|
|
newVals._maxSecPropertyStoreBackupSize = reg.Read(wcsSecondaryStoreBackupSize, _maxSecPropertyStoreBackupSize);
|
|
newVals._forcedNetPathScanInterval = reg.Read(wcsForcedNetPathScanInterval, _forcedNetPathScanInterval );
|
|
|
|
newVals._maxMergeInterval = reg.Read(wcsMaxMergeInterval, _maxMergeInterval );
|
|
newVals._threadPriorityMerge = reg.Read(wcsThreadPriorityMerge, _threadPriorityMerge );
|
|
newVals._maxUpdates = reg.Read(wcsMaxUpdates, _maxUpdates );
|
|
newVals._maxWordlists = reg.Read(wcsMaxWordLists, _maxWordlists );
|
|
newVals._minSizeMergeWordlist = reg.Read(wcsMinSizeMergeWordlists, _minSizeMergeWordlist );
|
|
newVals._maxWordlistSize = reg.Read(wcsMaxWordlistSize, _maxWordlistSize );
|
|
newVals._minWordlistMemory = reg.Read(wcsMinWordlistMemory, _minWordlistMemory );
|
|
newVals._maxWordlistIo = reg.Read(wcsMaxWordlistIo, _maxWordlistIo );
|
|
newVals._maxWordlistIoDiskPerf = reg.Read(wcsMaxWordlistIoDiskPerf, _maxWordlistIoDiskPerf );
|
|
newVals._minWordlistBattery = reg.Read(wcsMinWordlistBattery, _minWordlistBattery );
|
|
newVals._ResourceCheckInterval = reg.Read(wcsResourceCheckInterval, _ResourceCheckInterval );
|
|
newVals._maxFreshDeletes = reg.Read(wcsMaxFreshDeletes, _maxFreshDeletes );
|
|
newVals._lowResourceSleep = reg.Read(wcsLowResourceSleep, _lowResourceSleep );
|
|
newVals._maxWordlistMemoryLoad = reg.Read(wcsMaxWordlistMemoryLoad, _maxWordlistMemoryLoad );
|
|
newVals._maxFreshCount = reg.Read(wcsMaxFreshCount, _maxFreshCount );
|
|
newVals._maxQueueChunks = reg.Read(wcsMaxQueueChunks, _maxQueueChunks );
|
|
newVals._masterMergeCheckpointInterval = reg.Read(wcsMasterMergeCheckpointInterval, _masterMergeCheckpointInterval );
|
|
newVals._filterBufferSize = reg.Read(wcsFilterBufferSize, _filterBufferSize );
|
|
newVals._filterRetries = reg.Read(wcsFilterRetries, _filterRetries );
|
|
newVals._filterRetryInterval = reg.Read(wcsFilterRetryInterval, _filterRetryInterval );
|
|
newVals._maxShadowIndexSize = reg.Read(wcsMaxShadowIndexSize, _maxShadowIndexSize );
|
|
newVals._minDiskFreeForceMerge = reg.Read(wcsMinDiskFreeForceMerge, _minDiskFreeForceMerge );
|
|
newVals._maxShadowFreeForceMerge = reg.Read(wcsMaxShadowFreeForceMerge, _maxShadowFreeForceMerge );
|
|
newVals._maxIndexes = reg.Read(wcsMaxIndexes, _maxIndexes );
|
|
newVals._maxIdealIndexes = reg.Read(wcsMaxIdealIndexes, _maxIdealIndexes );
|
|
newVals._minMergeIdleTime = reg.Read(wcsMinMergeIdleTime, _minMergeIdleTime );
|
|
newVals._maxPendingDocuments = reg.Read(wcsMaxPendingDocuments, _maxPendingDocuments );
|
|
newVals._minIdleQueryThreads = reg.Read(wcsMinIdleQueryThreads, _minIdleQueryThreads );
|
|
newVals._maxActiveQueryThreads = reg.Read(wcsMaxActiveQueryThreads, _maxActiveQueryThreads );
|
|
newVals._maxQueryTimeslice = reg.Read(wcsMaxQueryTimeslice, _maxQueryTimeslice );
|
|
newVals._maxQueryExecutionTime = reg.Read(wcsMaxQueryExecutionTime, _maxQueryExecutionTime );
|
|
newVals._minIdleRequestThreads = reg.Read(wcsMinIdleRequestThreads, _minIdleRequestThreads );
|
|
newVals._minClientIdleTime = reg.Read(wcsMinClientIdleTime, _minClientIdleTime );
|
|
newVals._maxActiveRequestThreads = reg.Read(wcsMaxActiveRequestThreads, _maxActiveRequestThreads );
|
|
newVals._maxSimultaneousRequests = reg.Read(wcsMaxSimultaneousRequests, _maxSimultaneousRequests );
|
|
newVals._maxCachedPipes = reg.Read(wcsMaxCachedPipes, _maxCachedPipes );
|
|
newVals._WordlistUserIdle = reg.Read(wcsWordlistUserIdle, _WordlistUserIdle );
|
|
newVals._requestTimeout = reg.Read(wcsRequestTimeout, _requestTimeout );
|
|
newVals._W3SvcInstance = reg.Read(wcsW3SvcInstance, _W3SvcInstance );
|
|
newVals._NNTPSvcInstance = reg.Read(wcsNNTPSvcInstance, _NNTPSvcInstance );
|
|
newVals._IMAPSvcInstance = reg.Read(wcsIMAPSvcInstance, _IMAPSvcInstance );
|
|
newVals._fMinimizeWorkingSet = reg.Read(wcsMinimizeWorkingSet, _fMinimizeWorkingSet );
|
|
|
|
newVals._evtLogFlags = reg.Read(wcsEventLogFlags, _evtLogFlags );
|
|
newVals._miscCiFlags = reg.Read(wcsMiscFlags, _miscCiFlags );
|
|
newVals._ciCatalogFlags = reg.Read(wcsCiCatalogFlags, _ciCatalogFlags );
|
|
|
|
newVals._maxRestrictionNodes = reg.Read(wcsMaxRestrictionNodes, _maxRestrictionNodes );
|
|
newVals._maxUsnLogSize = reg.Read( wcsMaxUsnLogSize, _maxUsnLogSize );
|
|
newVals._usnLogAllocationDelta = reg.Read( wcsUsnLogAllocationDelta, _usnLogAllocationDelta );
|
|
newVals._ulScanBackoff = reg.Read( wcsScanBackoff, _ulScanBackoff );
|
|
newVals._ulStartupDelay = reg.Read( wcsStartupDelay, _ulStartupDelay );
|
|
newVals._ulUsnReadTimeout = reg.Read( wcsUsnReadTimeout, _ulUsnReadTimeout );
|
|
newVals._ulUsnReadMinSize = reg.Read( wcsUsnReadMinSize, _ulUsnReadMinSize );
|
|
newVals._fDelayUsnReadOnLowResource = reg.Read( wcsDelayUsnReadOnLowResource, _fDelayUsnReadOnLowResource );
|
|
newVals._maxDaemonVmUse = reg.Read( wcsMaxDaemonVmUse, _maxDaemonVmUse );
|
|
newVals._secQFilterRetries = reg.Read(wcsSecQFilterRetries, _secQFilterRetries );
|
|
newVals._ulStompLastAccessDelay = reg.Read(wcsStompLastAccessDelay, _ulStompLastAccessDelay );
|
|
|
|
newVals._minDiskSpaceToLeave = reg.Read( wcsMinDiskSpaceToLeave, _minDiskSpaceToLeave );
|
|
|
|
_StoreNewValues( newVals );
|
|
} //_ReadAndOverrideValues
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Member: CCiRegParams::_ReadValues, private
|
|
//
|
|
// Synopsis: Reads values for variables
|
|
//
|
|
// History: 12-Oct-96 dlee Added header
|
|
// 04-Feb-98 kitmanh Added entry for _fIsReadOnly
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void CCiRegParams::_ReadValues(
|
|
CRegAccess & reg,
|
|
CCiRegVars & vars )
|
|
{
|
|
vars._useOle = reg.Read(wcsUseOle, (ULONG) FALSE);
|
|
vars._filterContents = reg.Read(wcsFilterContents, (ULONG) TRUE );
|
|
vars._filterDelayInterval = reg.Read(wcsFilterDelayInterval, CI_FILTER_DELAY_INTERVAL_DEFAULT);
|
|
vars._filterRemainingThreshold = reg.Read(wcsFilterRemainingThreshold, CI_FILTER_REMAINING_THRESHOLD_DEFAULT);
|
|
vars._maxFilesizeFiltered = reg.Read(wcsMaxFilesizeFiltered, CI_MAX_FILESIZE_FILTERED_DEFAULT );
|
|
vars._masterMergeTime = reg.Read(wcsMasterMergeTime, CI_MASTER_MERGE_TIME_DEFAULT);
|
|
vars._maxFilesizeMultiplier = reg.Read(wcsMaxFilesizeMultiplier, CI_MAX_FILESIZE_MULTIPLIER_DEFAULT);
|
|
vars._threadClassFilter = reg.Read(wcsThreadClassFilter, CI_THREAD_CLASS_FILTER_DEFAULT);
|
|
vars._threadPriorityFilter = reg.Read(wcsThreadPriorityFilter, CI_THREAD_PRIORITY_FILTER_DEFAULT);
|
|
vars._daemonResponseTimeout = reg.Read(wcsDaemonResponseTimeout, CI_DAEMON_RESPONSE_TIMEOUT_DEFAULT );
|
|
vars._maxCharacterization = reg.Read(wcsMaxCharacterization, CI_MAX_CHARACTERIZATION_DEFAULT );
|
|
|
|
//
|
|
// Allow old behavior.
|
|
//
|
|
|
|
ULONG ulgenerateCharacterization = reg.Read(wcsGenerateCharacterization, 1 );
|
|
|
|
if ( 0 == ulgenerateCharacterization )
|
|
vars._maxCharacterization = 0;
|
|
|
|
vars._fIsAutoAlias = reg.Read(wcsIsAutoAlias, CI_IS_AUTO_ALIAS_DEFAULT );
|
|
vars._maxAutoAliasRefresh = reg.Read(wcsMaxAutoAliasRefresh, CI_MAX_AUTO_ALIAS_REFRESH_DEFAULT );
|
|
vars._fIsIndexingW3Roots = reg.Read(wcsIsIndexingW3Roots, CI_IS_INDEXING_W3_ROOTS_DEFAULT );
|
|
vars._fIsIndexingNNTPRoots = reg.Read(wcsIsIndexingNNTPRoots, CI_IS_INDEXING_NNTP_ROOTS_DEFAULT );
|
|
vars._fIsIndexingIMAPRoots = reg.Read(wcsIsIndexingIMAPRoots, CI_IS_INDEXING_IMAP_ROOTS_DEFAULT );
|
|
vars._fIsReadOnly = reg.Read(wcsIsReadOnly, (DWORD)CI_IS_READ_ONLY_DEFAULT );
|
|
vars._fIsEnumAllowed = reg.Read(wcsIsEnumAllowed, (ULONG)CI_IS_ENUM_ALLOWED_DEFAULT);
|
|
vars._fFilterDirectories = reg.Read(wcsFilterDirectories, CI_FILTER_DIRECTORIES_DEFAULT);
|
|
vars._fFilterFilesWithUnknownExtensions = reg.Read(wcsFilterFilesWithUnknownExtensions, CI_FILTER_FILES_WITH_UNKNOWN_EXTENSIONS_DEFAULT );
|
|
vars._fCatalogInactive = reg.Read(wcsCatalogInactive, CI_CATALOG_INACTIVE_DEFAULT );
|
|
vars._fForcePathAlias = reg.Read(wcsForcePathAlias, CI_FORCE_PATH_ALIAS_DEFAULT );
|
|
vars._maxPropertyStoreMappedCache = reg.Read(wcsPrimaryStoreMappedCache, CI_PROPERTY_STORE_MAPPED_CACHE_DEFAULT);
|
|
vars._maxPropertyStoreBackupSize = reg.Read(wcsPrimaryStoreBackupSize, CI_PROPERTY_STORE_BACKUP_SIZE_DEFAULT);
|
|
vars._maxSecPropertyStoreMappedCache= reg.Read(wcsSecondaryStoreMappedCache, CI_PROPERTY_STORE_MAPPED_CACHE_DEFAULT);
|
|
vars._maxSecPropertyStoreBackupSize = reg.Read(wcsSecondaryStoreBackupSize, CI_PROPERTY_STORE_BACKUP_SIZE_DEFAULT);
|
|
vars._forcedNetPathScanInterval = reg.Read(wcsForcedNetPathScanInterval, CI_FORCED_NETPATH_SCAN_DEFAULT );
|
|
|
|
vars._maxMergeInterval = reg.Read(wcsMaxMergeInterval, CI_MAX_MERGE_INTERVAL_DEFAULT);
|
|
vars._threadPriorityMerge = reg.Read(wcsThreadPriorityMerge, CI_THREAD_PRIORITY_MERGE_DEFAULT);
|
|
vars._maxUpdates = reg.Read(wcsMaxUpdates, CI_MAX_UPDATES_DEFAULT);
|
|
vars._maxWordlists = reg.Read(wcsMaxWordLists, CI_MAX_WORDLISTS_DEFAULT);
|
|
vars._minSizeMergeWordlist = reg.Read(wcsMinSizeMergeWordlists, CI_MIN_SIZE_MERGE_WORDLISTS_DEFAULT);
|
|
vars._maxWordlistSize = reg.Read(wcsMaxWordlistSize, CI_MAX_WORDLIST_SIZE_DEFAULT);
|
|
vars._minWordlistMemory = reg.Read(wcsMinWordlistMemory, CI_MIN_WORDLIST_MEMORY_DEFAULT);
|
|
vars._maxWordlistIo = reg.Read(wcsMaxWordlistIo, CI_MAX_WORDLIST_IO_DEFAULT );
|
|
vars._maxWordlistIoDiskPerf = reg.Read(wcsMaxWordlistIoDiskPerf, CI_MAX_WORDLIST_IO_DISKPERF_DEFAULT );
|
|
vars._minWordlistBattery = reg.Read(wcsMinWordlistBattery, CI_MIN_WORDLIST_BATTERY_DEFAULT );
|
|
vars._ResourceCheckInterval = reg.Read(wcsResourceCheckInterval, CI_WORDLIST_RESOURCE_CHECK_INTERVAL_DEFAULT );
|
|
vars._maxFreshDeletes = reg.Read(wcsMaxFreshDeletes, CI_MAX_FRESH_DELETES_DEFAULT );
|
|
vars._lowResourceSleep = reg.Read(wcsLowResourceSleep, CI_LOW_RESOURCE_SLEEP_DEFAULT);
|
|
vars._maxWordlistMemoryLoad = reg.Read(wcsMaxWordlistMemoryLoad, CI_MAX_WORDLIST_MEMORY_LOAD_DEFAULT);
|
|
vars._maxFreshCount = reg.Read(wcsMaxFreshCount, CI_MAX_FRESHCOUNT_DEFAULT);
|
|
vars._maxQueueChunks = reg.Read(wcsMaxQueueChunks, CI_MAX_QUEUE_CHUNKS_DEFAULT);
|
|
vars._masterMergeCheckpointInterval = reg.Read(wcsMasterMergeCheckpointInterval, CI_MASTER_MERGE_CHECKPOINT_INTERVAL_DEFAULT);
|
|
vars._filterBufferSize = reg.Read(wcsFilterBufferSize, CI_FILTER_BUFFER_SIZE_DEFAULT);
|
|
vars._filterRetries = reg.Read(wcsFilterRetries, CI_FILTER_RETRIES_DEFAULT);
|
|
vars._filterRetryInterval = reg.Read(wcsFilterRetryInterval, CI_FILTER_RETRY_INTERVAL_DEFAULT);
|
|
vars._maxShadowIndexSize = reg.Read(wcsMaxShadowIndexSize, CI_MAX_SHADOW_INDEX_SIZE_DEFAULT);
|
|
vars._minDiskFreeForceMerge = reg.Read(wcsMinDiskFreeForceMerge, CI_MIN_DISKFREE_FORCE_MERGE_DEFAULT);
|
|
vars._maxShadowFreeForceMerge = reg.Read(wcsMaxShadowFreeForceMerge, CI_MAX_SHADOW_FREE_FORCE_MERGE_DEFAULT);
|
|
vars._maxIndexes = reg.Read(wcsMaxIndexes, CI_MAX_INDEXES_DEFAULT);
|
|
vars._maxIdealIndexes = reg.Read(wcsMaxIdealIndexes, CI_MAX_IDEAL_INDEXES_DEFAULT);
|
|
vars._minMergeIdleTime = reg.Read(wcsMinMergeIdleTime, CI_MIN_MERGE_IDLE_TIME_DEFAULT);
|
|
vars._maxPendingDocuments = reg.Read(wcsMaxPendingDocuments, CI_MAX_PENDING_DOCUMENTS_DEFAULT);
|
|
vars._minIdleQueryThreads = reg.Read(wcsMinIdleQueryThreads, CI_MIN_IDLE_QUERY_THREADS_DEFAULT);
|
|
vars._maxActiveQueryThreads = reg.Read(wcsMaxActiveQueryThreads, CI_MAX_ACTIVE_QUERY_THREADS_DEFAULT);
|
|
vars._maxQueryTimeslice = reg.Read(wcsMaxQueryTimeslice, CI_MAX_QUERY_TIMESLICE_DEFAULT);
|
|
vars._maxQueryExecutionTime = reg.Read(wcsMaxQueryExecutionTime, CI_MAX_QUERY_EXECUTION_TIME_DEFAULT);
|
|
vars._minIdleRequestThreads = reg.Read(wcsMinIdleRequestThreads, CI_MIN_IDLE_REQUEST_THREADS_DEFAULT);
|
|
vars._maxActiveRequestThreads = reg.Read(wcsMaxActiveRequestThreads, CI_MAX_ACTIVE_REQUEST_THREADS_DEFAULT);
|
|
vars._maxSimultaneousRequests = reg.Read(wcsMaxSimultaneousRequests, CI_MAX_SIMULTANEOUS_REQUESTS_DEFAULT);
|
|
vars._maxCachedPipes = reg.Read(wcsMaxCachedPipes, CI_MAX_CACHED_PIPES_DEFAULT);
|
|
vars._requestTimeout = reg.Read(wcsRequestTimeout, CI_REQUEST_TIMEOUT_DEFAULT);
|
|
vars._W3SvcInstance = reg.Read(wcsW3SvcInstance, CI_W3SVC_INSTANCE_DEFAULT );
|
|
vars._NNTPSvcInstance = reg.Read(wcsNNTPSvcInstance, CI_NNTPSVC_INSTANCE_DEFAULT );
|
|
vars._IMAPSvcInstance = reg.Read(wcsIMAPSvcInstance, CI_IMAPSVC_INSTANCE_DEFAULT );
|
|
vars._fMinimizeWorkingSet = reg.Read(wcsMinimizeWorkingSet, (DWORD)CI_MINIMIZE_WORKINGSET_DEFAULT );
|
|
|
|
vars._evtLogFlags = reg.Read(wcsEventLogFlags, CI_EVTLOG_FLAGS_DEFAULT);
|
|
vars._miscCiFlags = reg.Read(wcsMiscFlags, CI_MISC_FLAGS_DEFAULT);
|
|
vars._ciCatalogFlags = reg.Read(wcsCiCatalogFlags, CI_FLAGS_DEFAULT);
|
|
vars._maxUsnLogSize = reg.Read( wcsMaxUsnLogSize, CI_MAX_USN_LOG_SIZE_DEFAULT );
|
|
vars._usnLogAllocationDelta = reg.Read( wcsUsnLogAllocationDelta, CI_USN_LOG_ALLOCATION_DELTA_DEFAULT );
|
|
vars._ulScanBackoff = reg.Read( wcsScanBackoff, CI_SCAN_BACKOFF_DEFAULT );
|
|
vars._ulStartupDelay = reg.Read( wcsStartupDelay, CI_STARTUP_DELAY_DEFAULT );
|
|
vars._ulUsnReadTimeout = reg.Read( wcsUsnReadTimeout, CI_USN_READ_TIMEOUT_DEFAULT );
|
|
vars._ulUsnReadMinSize = reg.Read( wcsUsnReadMinSize, CI_USN_READ_MIN_SIZE_DEFAULT );
|
|
vars._fDelayUsnReadOnLowResource = reg.Read( wcsDelayUsnReadOnLowResource, CI_DELAY_USN_READ_ON_LOW_RESOURCE_DEFAULT );
|
|
vars._maxDaemonVmUse = reg.Read( wcsMaxDaemonVmUse, CI_MAX_DAEMON_VM_USE_DEFAULT );
|
|
vars._secQFilterRetries = reg.Read(wcsSecQFilterRetries, CI_SECQ_FILTER_RETRIES_DEFAULT);
|
|
|
|
vars._maxRestrictionNodes = reg.Read(wcsMaxRestrictionNodes, CI_MAX_RESTRICTION_NODES_DEFAULT );
|
|
vars._ulStompLastAccessDelay = reg.Read(wcsStompLastAccessDelay, CI_STOMP_LAST_ACCESS_DELAY_DEFAULT );
|
|
|
|
vars._WordlistUserIdle = reg.Read(wcsWordlistUserIdle, CI_WORDLIST_USER_IDLE_DEFAULT );
|
|
vars._minDiskSpaceToLeave = reg.Read( wcsMinDiskSpaceToLeave, CI_MIN_DISK_SPACE_TO_LEAVE_DEFAULT );
|
|
|
|
#if DBG == 1 || CIDBG == 1
|
|
ULONG ulLevel = reg.Read( wcsWin4AssertLevel, 0xFFFFFFFF );
|
|
if (ulLevel != 0xFFFFFFFF )
|
|
SetWin4AssertLevel( ulLevel );
|
|
#endif // DBG == 1 || CIDBG == 1
|
|
} //_ReadValues
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Member: CCiRegParams::_StoreCIValues, private
|
|
//
|
|
// Synopsis: Packs all CI parameters in an array of CStorageVariants,
|
|
// and sets CI by invoking ICiAdminParams::SetValues()
|
|
//
|
|
// History: 1-24-97 mohamedn created
|
|
//
|
|
// Notes:
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void CCiRegParams::_StoreCIValues(CCiRegVars & vars, ICiAdminParams * pICiAdminParams )
|
|
{
|
|
|
|
if ( pICiAdminParams )
|
|
{
|
|
|
|
CStorageVariant aParamVals[CI_AP_MAX_VAL];
|
|
|
|
aParamVals[CI_AP_MERGE_INTERVAL] = vars._maxMergeInterval;
|
|
aParamVals[CI_AP_MAX_UPDATES] = vars._maxUpdates;
|
|
aParamVals[CI_AP_MAX_WORDLISTS] = vars._maxWordlists;
|
|
aParamVals[CI_AP_MIN_SIZE_MERGE_WORDLISTS] = vars._minSizeMergeWordlist;
|
|
|
|
aParamVals[CI_AP_MAX_WORDLIST_SIZE] = vars._maxWordlistSize;
|
|
aParamVals[CI_AP_MIN_WORDLIST_MEMORY] = vars._minWordlistMemory;
|
|
aParamVals[CI_AP_LOW_RESOURCE_SLEEP] = vars._lowResourceSleep;
|
|
aParamVals[CI_AP_MAX_WORDLIST_MEMORY_LOAD] = vars._maxWordlistMemoryLoad;
|
|
aParamVals[CI_AP_MAX_WORDLIST_IO] = vars._maxWordlistIo;
|
|
aParamVals[CI_AP_WORDLIST_RESOURCE_CHECK_INTERVAL] = vars._ResourceCheckInterval;
|
|
aParamVals[CI_AP_STARTUP_DELAY] = vars._ulStartupDelay;
|
|
|
|
// Note: we don't really use this -- it's just for Olympus.
|
|
// It's always TRUE for CI (even though if the size is 0 they
|
|
// won't be generated.
|
|
|
|
aParamVals[CI_AP_GENERATE_CHARACTERIZATION] = CI_GENERATE_CHARACTERIZATION_DEFAULT;
|
|
|
|
aParamVals[CI_AP_MAX_FRESH_COUNT] = vars._maxFreshCount;
|
|
aParamVals[CI_AP_MAX_SHADOW_INDEX_SIZE] = vars._maxShadowIndexSize;
|
|
aParamVals[CI_AP_MIN_DISK_FREE_FORCE_MERGE] = vars._minDiskFreeForceMerge;
|
|
aParamVals[CI_AP_MAX_SHADOW_FREE_FORCE_MERGE] = vars._maxShadowFreeForceMerge;
|
|
|
|
aParamVals[CI_AP_MAX_INDEXES] = vars._maxIndexes;
|
|
aParamVals[CI_AP_MAX_IDEAL_INDEXES] = vars._maxIdealIndexes;
|
|
aParamVals[CI_AP_MIN_MERGE_IDLE_TIME] = vars._minMergeIdleTime;
|
|
aParamVals[CI_AP_MAX_PENDING_DOCUMENTS] = vars._maxPendingDocuments;
|
|
|
|
aParamVals[CI_AP_MASTER_MERGE_TIME] = vars._masterMergeTime;
|
|
aParamVals[CI_AP_MAX_QUEUE_CHUNKS] = vars._maxQueueChunks;
|
|
aParamVals[CI_AP_MASTER_MERGE_CHECKPOINT_INTERVAL] = vars._masterMergeCheckpointInterval;
|
|
aParamVals[CI_AP_FILTER_BUFFER_SIZE] = vars._filterBufferSize;
|
|
|
|
aParamVals[CI_AP_FILTER_RETRIES] = vars._filterRetries;
|
|
aParamVals[CI_AP_FILTER_RETRY_INTERVAL] = vars._filterRetryInterval;
|
|
aParamVals[CI_AP_MIN_IDLE_QUERY_THREADS] = vars._minIdleQueryThreads;
|
|
aParamVals[CI_AP_MAX_ACTIVE_QUERY_THREADS] = vars._maxActiveQueryThreads;
|
|
|
|
aParamVals[CI_AP_MAX_QUERY_TIMESLICE] = vars._maxQueryTimeslice;
|
|
aParamVals[CI_AP_MAX_QUERY_EXECUTION_TIME] = vars._maxQueryExecutionTime;
|
|
aParamVals[CI_AP_MAX_RESTRICTION_NODES] = vars._maxRestrictionNodes;
|
|
aParamVals[CI_AP_CLUSTERINGTIME] = (ULONG)0; // not supported yet.
|
|
|
|
aParamVals[CI_AP_MAX_FILESIZE_MULTIPLIER] = vars._maxFilesizeMultiplier;
|
|
aParamVals[CI_AP_DAEMON_RESPONSE_TIMEOUT] = vars._daemonResponseTimeout;
|
|
aParamVals[CI_AP_FILTER_DELAY_INTERVAL] = vars._filterDelayInterval;
|
|
aParamVals[CI_AP_FILTER_REMAINING_THRESHOLD] = vars._filterRemainingThreshold;
|
|
|
|
aParamVals[CI_AP_MAX_CHARACTERIZATION] = vars._maxCharacterization;
|
|
aParamVals[CI_AP_MIN_WORDLIST_BATTERY] = vars._minWordlistBattery;
|
|
aParamVals[CI_AP_THREAD_PRIORITY_MERGE] = (ULONG)vars._threadPriorityMerge;
|
|
aParamVals[CI_AP_THREAD_PRIORITY_FILTER] = (ULONG)vars._threadPriorityFilter;
|
|
|
|
aParamVals[CI_AP_THREAD_CLASS_FILTER] = (ULONG)vars._threadClassFilter;
|
|
aParamVals[CI_AP_EVTLOG_FLAGS] = vars._evtLogFlags;
|
|
aParamVals[CI_AP_MISC_FLAGS] = vars._miscCiFlags;
|
|
aParamVals[CI_AP_GENERATE_RELEVANT_WORDS] = (ULONG)0; // not supported yet.
|
|
|
|
aParamVals[CI_AP_FFILTER_FILES_WITH_UNKNOWN_EXTENSIONS] = (ULONG)vars._fFilterFilesWithUnknownExtensions;
|
|
aParamVals[CI_AP_FILTER_DIRECTORIES] = (ULONG)vars._fFilterDirectories;
|
|
aParamVals[CI_AP_FILTER_CONTENTS] = (ULONG)vars._filterContents;
|
|
aParamVals[CI_AP_MAX_FILESIZE_FILTERED] = (ULONG)vars._maxFilesizeFiltered;
|
|
|
|
aParamVals[CI_AP_MAX_FRESH_DELETES] = vars._maxFreshDeletes;
|
|
aParamVals[CI_AP_MIN_CLIENT_IDLE_TIME] = vars._minClientIdleTime;
|
|
aParamVals[CI_AP_MAX_DAEMON_VM_USE] = vars._maxDaemonVmUse;
|
|
aParamVals[CI_AP_SECQ_FILTER_RETRIES] = vars._secQFilterRetries;
|
|
aParamVals[CI_AP_WORDLIST_USER_IDLE] = vars._WordlistUserIdle;
|
|
aParamVals[CI_AP_IS_ENUM_ALLOWED] = (ULONG)vars._fIsEnumAllowed;
|
|
aParamVals[CI_AP_MIN_DISK_SPACE_TO_LEAVE] = vars._minDiskSpaceToLeave;
|
|
|
|
aParamVals[CI_AP_MAX_DWORD_VAL] = (ULONG)0; // place holder to mark end of values that fit in DWORD.
|
|
|
|
#if CIDBG == 1
|
|
|
|
for ( int i = 0; i < CI_AP_MAX_VAL; i++ )
|
|
Win4Assert( VT_EMPTY != aParamVals[i].Type() );
|
|
|
|
#endif // CIDBG == 1
|
|
|
|
// both aParamVal and _aParamNames arrays have the same size - CI_AP_MAX_VAL in this case.
|
|
|
|
SCODE sc = pICiAdminParams->SetValues( CI_AP_MAX_VAL , aParamVals, _aParamNames );
|
|
|
|
if (sc != S_OK)
|
|
{
|
|
ciDebugOut(( DEB_ERROR,"pICiAdminParams->SetValues() failed: %x",sc));
|
|
}
|
|
}
|
|
|
|
} //_StoreCIValues
|
|
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Member: CCiRegVars::_StoreNewValues, private
|
|
//
|
|
// Synopsis: Transfers range-checked values
|
|
//
|
|
// History: 12-Oct-96 dlee Added header
|
|
// 04-Feb-98 kitmanh Added entry for _fIsReadOnly
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void CCiRegParams::_StoreNewValues(CCiRegVars & vars )
|
|
{
|
|
|
|
InterlockedExchange( (long *) &_useOle, vars._useOle != 0 );
|
|
InterlockedExchange( (long *) &_filterContents, vars._filterContents != 0 );
|
|
InterlockedExchange( (long *) &_filterDelayInterval, Range( vars._filterDelayInterval, CI_FILTER_DELAY_INTERVAL_MIN, CI_FILTER_DELAY_INTERVAL_MAX ) );
|
|
InterlockedExchange( (long *) &_filterRemainingThreshold, Range( vars._filterRemainingThreshold, CI_FILTER_REMAINING_THRESHOLD_MIN, CI_FILTER_REMAINING_THRESHOLD_MAX ) );
|
|
InterlockedExchange( (long *) &_maxFilesizeFiltered, vars._maxFilesizeFiltered );
|
|
InterlockedExchange( (long *) &_masterMergeTime, Range( vars._masterMergeTime, CI_MASTER_MERGE_TIME_MIN, CI_MASTER_MERGE_TIME_MAX ) );
|
|
InterlockedExchange( (long *) &_maxFilesizeMultiplier, Range( vars._maxFilesizeMultiplier, CI_MAX_FILESIZE_MULTIPLIER_MIN, CI_MAX_FILESIZE_MULTIPLIER_MAX ) );
|
|
InterlockedExchange( (long *) &_threadClassFilter, Range( vars._threadClassFilter, CI_THREAD_CLASS_FILTER_MIN, CI_THREAD_CLASS_FILTER_MAX ) );
|
|
InterlockedExchange( (long *) &_threadPriorityFilter, Range( vars._threadPriorityFilter, THREAD_BASE_PRIORITY_MIN, THREAD_BASE_PRIORITY_MAX ) );
|
|
InterlockedExchange( (long *) &_daemonResponseTimeout, Range( vars._daemonResponseTimeout, CI_DAEMON_RESPONSE_TIMEOUT_MIN, CI_DAEMON_RESPONSE_TIMEOUT_MAX ) );
|
|
InterlockedExchange( (long *) &_maxCharacterization, Range( vars._maxCharacterization, CI_MAX_CHARACTERIZATION_MIN, CI_MAX_CHARACTERIZATION_MAX ) );
|
|
InterlockedExchange( (long *) &_fIsAutoAlias, vars._fIsAutoAlias != 0 );
|
|
InterlockedExchange( (long *) &_maxAutoAliasRefresh, Range( vars._maxAutoAliasRefresh, CI_MAX_AUTO_ALIAS_REFRESH_MIN, CI_MAX_AUTO_ALIAS_REFRESH_MAX ) );
|
|
InterlockedExchange( (long *) &_fIsIndexingW3Roots, vars._fIsIndexingW3Roots != 0 );
|
|
InterlockedExchange( (long *) &_fIsIndexingNNTPRoots, vars._fIsIndexingNNTPRoots != 0 );
|
|
InterlockedExchange( (long *) &_fIsIndexingIMAPRoots, vars._fIsIndexingIMAPRoots != 0 );
|
|
InterlockedExchange( (long *) &_fIsReadOnly, vars._fIsReadOnly != 0 );
|
|
InterlockedExchange( (long *) &_fIsEnumAllowed, vars._fIsEnumAllowed != 0 );
|
|
InterlockedExchange( (long *) &_fFilterDirectories, vars._fFilterDirectories != 0 );
|
|
InterlockedExchange( (long *) &_fFilterFilesWithUnknownExtensions, vars._fFilterFilesWithUnknownExtensions != 0 );
|
|
InterlockedExchange( (long *) &_fCatalogInactive, vars._fCatalogInactive != 0 );
|
|
InterlockedExchange( (long *) &_fForcePathAlias, vars._fForcePathAlias != 0 );
|
|
InterlockedExchange( (long *) &_maxPropertyStoreMappedCache, Range( vars._maxPropertyStoreMappedCache, CI_PROPERTY_STORE_MAPPED_CACHE_MIN, CI_PROPERTY_STORE_MAPPED_CACHE_MAX ) );
|
|
InterlockedExchange( (long *) &_maxPropertyStoreBackupSize, Range( vars._maxPropertyStoreBackupSize, CI_PROPERTY_STORE_BACKUP_SIZE_MIN, CI_PROPERTY_STORE_BACKUP_SIZE_MAX ) );
|
|
InterlockedExchange( (long *) &_maxSecPropertyStoreMappedCache, Range( vars._maxSecPropertyStoreMappedCache, CI_PROPERTY_STORE_MAPPED_CACHE_MIN, CI_PROPERTY_STORE_MAPPED_CACHE_MAX ) );
|
|
InterlockedExchange( (long *) &_maxSecPropertyStoreBackupSize, Range( vars._maxSecPropertyStoreBackupSize, CI_PROPERTY_STORE_BACKUP_SIZE_MIN, CI_PROPERTY_STORE_BACKUP_SIZE_MAX ) );
|
|
InterlockedExchange( (long *) &_forcedNetPathScanInterval, Range( vars._forcedNetPathScanInterval, CI_FORCED_NETPATH_SCAN_MIN, CI_FORCED_NETPATH_SCAN_MAX ) );
|
|
|
|
InterlockedExchange( (long *) &_maxMergeInterval, Range( vars._maxMergeInterval, CI_MAX_MERGE_INTERVAL_MIN, CI_MAX_MERGE_INTERVAL_MAX ) );
|
|
InterlockedExchange( (long *) &_threadPriorityMerge, Range( vars._threadPriorityMerge, THREAD_BASE_PRIORITY_MIN, THREAD_BASE_PRIORITY_MAX ) );
|
|
InterlockedExchange( (long *) &_maxUpdates, Range( vars._maxUpdates, CI_MAX_UPDATES_MIN, CI_MAX_UPDATES_MAX ) );
|
|
InterlockedExchange( (long *) &_maxWordlists, Range( vars._maxWordlists, CI_MAX_WORDLISTS_MIN, CI_MAX_WORDLISTS_MAX ) );
|
|
InterlockedExchange( (long *) &_minSizeMergeWordlist, Range( vars._minSizeMergeWordlist, CI_MIN_SIZE_MERGE_WORDLISTS_MIN, CI_MIN_SIZE_MERGE_WORDLISTS_MAX ) );
|
|
InterlockedExchange( (long *) &_maxWordlistSize, Range( vars._maxWordlistSize, CI_MAX_WORDLIST_SIZE_MIN, CI_MAX_WORDLIST_SIZE_MAX ) );
|
|
InterlockedExchange( (long *) &_minWordlistMemory, Range( vars._minWordlistMemory, CI_MIN_WORDLIST_MEMORY_MIN, CI_MIN_WORDLIST_MEMORY_MAX ) );
|
|
InterlockedExchange( (long *) &_maxWordlistIo, Range( vars._maxWordlistIo, CI_MAX_WORDLIST_IO_MIN, CI_MAX_WORDLIST_IO_MAX ) );
|
|
InterlockedExchange( (long *) &_maxWordlistIoDiskPerf, Range( vars._maxWordlistIoDiskPerf, CI_MAX_WORDLIST_IO_DISKPERF_MIN, CI_MAX_WORDLIST_IO_DISKPERF_MAX ) );
|
|
InterlockedExchange( (long *) &_minWordlistBattery, Range( vars._minWordlistBattery, CI_MIN_WORDLIST_BATTERY_MIN, CI_MIN_WORDLIST_BATTERY_MAX ) );
|
|
InterlockedExchange( (long *) &_ResourceCheckInterval, Range( vars._ResourceCheckInterval, CI_WORDLIST_RESOURCE_CHECK_INTERVAL_MIN, CI_WORDLIST_RESOURCE_CHECK_INTERVAL_MAX ) );
|
|
InterlockedExchange( (long *) &_maxFreshDeletes, Range( vars._maxFreshDeletes, CI_MAX_FRESH_DELETES_MIN, CI_MAX_FRESH_DELETES_MAX ) );
|
|
InterlockedExchange( (long *) &_lowResourceSleep, Range( vars._lowResourceSleep, CI_LOW_RESOURCE_SLEEP_MIN, CI_LOW_RESOURCE_SLEEP_MAX ) );
|
|
InterlockedExchange( (long *) &_maxWordlistMemoryLoad, Range( vars._maxWordlistMemoryLoad, CI_MAX_WORDLIST_MEMORY_LOAD_MIN, CI_MAX_WORDLIST_MEMORY_LOAD_MAX ) );
|
|
InterlockedExchange( (long *) &_maxFreshCount, Range( vars._maxFreshCount, CI_MAX_FRESHCOUNT_MIN, CI_MAX_FRESHCOUNT_MAX ) );
|
|
InterlockedExchange( (long *) &_maxQueueChunks, Range( vars._maxQueueChunks, CI_MAX_QUEUE_CHUNKS_MIN, CI_MAX_QUEUE_CHUNKS_MAX ) );
|
|
InterlockedExchange( (long *) &_masterMergeCheckpointInterval,
|
|
Range( vars._masterMergeCheckpointInterval, CI_MASTER_MERGE_CHECKPOINT_INTERVAL_MIN, CI_MASTER_MERGE_CHECKPOINT_INTERVAL_MAX ) );
|
|
InterlockedExchange( (long *) &_filterBufferSize, Range( vars._filterBufferSize, CI_FILTER_BUFFER_SIZE_MIN, CI_FILTER_BUFFER_SIZE_MAX ) );
|
|
InterlockedExchange( (long *) &_filterRetries, Range( vars._filterRetries, CI_FILTER_RETRIES_MIN, CI_FILTER_RETRIES_MAX ) );
|
|
InterlockedExchange( (long *) &_filterRetryInterval, Range( vars._filterRetryInterval, CI_FILTER_RETRY_INTERVAL_MIN, CI_FILTER_RETRY_INTERVAL_MAX ) );
|
|
InterlockedExchange( (long *) &_maxShadowIndexSize, Range( vars._maxShadowIndexSize, CI_MAX_SHADOW_INDEX_SIZE_MIN, CI_MAX_SHADOW_INDEX_SIZE_MAX ) );
|
|
InterlockedExchange( (long *) &_minDiskFreeForceMerge, Range( vars._minDiskFreeForceMerge, CI_MIN_DISKFREE_FORCE_MERGE_MIN, CI_MIN_DISKFREE_FORCE_MERGE_MAX ) );
|
|
InterlockedExchange( (long *) &_maxShadowFreeForceMerge, Range( vars._maxShadowFreeForceMerge, CI_MAX_SHADOW_FREE_FORCE_MERGE_MIN, CI_MAX_SHADOW_FREE_FORCE_MERGE_MAX ) );
|
|
InterlockedExchange( (long *) &_maxIndexes, Range( vars._maxIndexes, CI_MAX_INDEXES_MIN, CI_MAX_INDEXES_MAX ) );
|
|
InterlockedExchange( (long *) &_maxIdealIndexes, Range( vars._maxIdealIndexes, CI_MAX_IDEAL_INDEXES_MIN, CI_MAX_IDEAL_INDEXES_MAX ) );
|
|
InterlockedExchange( (long *) &_minMergeIdleTime, Range( vars._minMergeIdleTime, CI_MIN_MERGE_IDLE_TIME_MIN, CI_MIN_MERGE_IDLE_TIME_MAX ) );
|
|
InterlockedExchange( (long *) &_maxPendingDocuments, Range( vars._maxPendingDocuments, CI_MAX_PENDING_DOCUMENTS_MIN, CI_MAX_PENDING_DOCUMENTS_MAX ) );
|
|
InterlockedExchange( (long *) &_minIdleQueryThreads, Range( vars._minIdleQueryThreads, CI_MIN_IDLE_QUERY_THREADS_MIN, CI_MIN_IDLE_QUERY_THREADS_MAX ) );
|
|
InterlockedExchange( (long *) &_maxActiveQueryThreads, Range( vars._maxActiveQueryThreads, CI_MAX_ACTIVE_QUERY_THREADS_MIN, CI_MAX_ACTIVE_QUERY_THREADS_MAX ) );
|
|
InterlockedExchange( (long *) &_maxQueryTimeslice, Range( vars._maxQueryTimeslice, CI_MAX_QUERY_TIMESLICE_MIN, CI_MAX_QUERY_TIMESLICE_MAX ) );
|
|
InterlockedExchange( (long *) &_maxQueryExecutionTime, Range( vars._maxQueryExecutionTime, CI_MAX_QUERY_EXECUTION_TIME_MIN, CI_MAX_QUERY_EXECUTION_TIME_MAX ) );
|
|
InterlockedExchange( (long *) &_maxRestrictionNodes, Range( vars._maxRestrictionNodes, CI_MAX_RESTRICTION_NODES_MIN, CI_MAX_RESTRICTION_NODES_MAX ) );
|
|
InterlockedExchange( (long *) &_minIdleRequestThreads, Range( vars._minIdleRequestThreads, CI_MIN_IDLE_REQUEST_THREADS_MIN, CI_MIN_IDLE_REQUEST_THREADS_MAX ) );
|
|
InterlockedExchange( (long *) &_minClientIdleTime, Range( vars._minClientIdleTime, CI_MIN_CLIENT_IDLE_TIME, CI_MIN_CLIENT_IDLE_TIME ) );
|
|
InterlockedExchange( (long *) &_maxActiveRequestThreads, Range( vars._maxActiveRequestThreads, CI_MAX_ACTIVE_REQUEST_THREADS_MIN, CI_MAX_ACTIVE_REQUEST_THREADS_MAX ) );
|
|
InterlockedExchange( (long *) &_maxSimultaneousRequests, Range( vars._maxSimultaneousRequests, CI_MAX_SIMULTANEOUS_REQUESTS_MIN, CI_MAX_SIMULTANEOUS_REQUESTS_MAX ) );
|
|
InterlockedExchange( (long *) &_maxCachedPipes, Range( vars._maxCachedPipes, CI_MAX_CACHED_PIPES_MIN, CI_MAX_CACHED_PIPES_MAX ) );
|
|
InterlockedExchange( (long *) &_requestTimeout, Range( vars._requestTimeout, CI_REQUEST_TIMEOUT_MIN, CI_REQUEST_TIMEOUT_MAX ) );
|
|
InterlockedExchange( (long *) &_W3SvcInstance, Range( vars._W3SvcInstance, CI_W3SVC_INSTANCE_MIN, CI_W3SVC_INSTANCE_MAX ) );
|
|
InterlockedExchange( (long *) &_NNTPSvcInstance, Range( vars._NNTPSvcInstance, CI_NNTPSVC_INSTANCE_MIN, CI_NNTPSVC_INSTANCE_MAX ) );
|
|
InterlockedExchange( (long *) &_IMAPSvcInstance, Range( vars._IMAPSvcInstance, CI_IMAPSVC_INSTANCE_MIN, CI_IMAPSVC_INSTANCE_MAX ) );
|
|
InterlockedExchange( (long *) &_ulScanBackoff, Range( vars._ulScanBackoff, CI_SCAN_BACKOFF_MIN, CI_SCAN_BACKOFF_MAX ) );
|
|
InterlockedExchange( (long *) &_ulStartupDelay, Range( vars._ulStartupDelay, CI_STARTUP_DELAY_MIN, CI_STARTUP_DELAY_MAX ) );
|
|
InterlockedExchange( (long *) &_ulUsnReadTimeout, Range( vars._ulUsnReadTimeout, CI_USN_READ_TIMEOUT_MIN, CI_USN_READ_TIMEOUT_MAX ) );
|
|
InterlockedExchange( (long *) &_ulUsnReadMinSize, Range( vars._ulUsnReadMinSize, CI_USN_READ_MIN_SIZE_MIN, CI_USN_READ_MIN_SIZE_MAX ) );
|
|
InterlockedExchange( (long *) &_fDelayUsnReadOnLowResource, vars._fDelayUsnReadOnLowResource != 0 );
|
|
InterlockedExchange( (long *) &_maxDaemonVmUse, Range( vars._maxDaemonVmUse, CI_MAX_DAEMON_VM_USE_MIN, CI_MAX_DAEMON_VM_USE_MAX ) );
|
|
InterlockedExchange( (long *) &_secQFilterRetries, Range( vars._secQFilterRetries, CI_SECQ_FILTER_RETRIES_MIN, CI_SECQ_FILTER_RETRIES_MAX ) );
|
|
InterlockedExchange( (long *) &_fMinimizeWorkingSet, vars._fMinimizeWorkingSet );
|
|
|
|
InterlockedExchange( (long *) &_WordlistUserIdle, Range( vars._WordlistUserIdle, CI_WORDLIST_USER_IDLE_MIN, CI_WORDLIST_USER_IDLE_MAX ) );
|
|
|
|
InterlockedExchange( (long *) &_evtLogFlags, vars._evtLogFlags );
|
|
InterlockedExchange( (long *) &_miscCiFlags, vars._miscCiFlags );
|
|
InterlockedExchange( (long *) &_ciCatalogFlags, vars._ciCatalogFlags );
|
|
InterlockedExchange( (long *) &_maxUsnLogSize, vars._maxUsnLogSize );
|
|
InterlockedExchange( (long *) &_usnLogAllocationDelta, vars._usnLogAllocationDelta );
|
|
InterlockedExchange( (long *) &_ulStompLastAccessDelay, Range( vars._ulStompLastAccessDelay, CI_STOMP_LAST_ACCESS_DELAY_MIN, CI_STOMP_LAST_ACCESS_DELAY_MAX ) );
|
|
InterlockedExchange( (long *) &_minDiskSpaceToLeave, Range( vars._minDiskSpaceToLeave, CI_MIN_DISK_SPACE_TO_LEAVE_MIN, CI_MIN_DISK_SPACE_TO_LEAVE_MAX ) );
|
|
|
|
} //_StoreNewValues
|
|
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Member: CCiRegParams::Refresh, public
|
|
//
|
|
// Synopsis: Reads the values from the registry
|
|
//
|
|
// History: 12-Oct-96 dlee Added header, reorganized
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void CCiRegParams::Refresh(
|
|
ICiAdminParams * pICiAdminParams,
|
|
BOOL fUseDefaultsOnFailure )
|
|
{
|
|
// Grab the lock so no other writers try to update at the same time
|
|
|
|
CCiRegVars newVals;
|
|
CLock lock( _mutex );
|
|
|
|
TRY
|
|
{
|
|
// Query the registry.
|
|
|
|
CRegAccess regAdmin( RTL_REGISTRY_CONTROL, wcsRegAdmin );
|
|
|
|
_ReadValues( regAdmin, newVals );
|
|
_StoreNewValues( newVals );
|
|
|
|
// if there is a catalog override, use it
|
|
|
|
_OverrideForCatalog();
|
|
|
|
_StoreCIValues( *this, pICiAdminParams );
|
|
}
|
|
CATCH (CException, e)
|
|
{
|
|
// Only store defaults when told to do so -- the params
|
|
// are still in good shape at this point and are more
|
|
// accurate than the default settings.
|
|
|
|
if ( fUseDefaultsOnFailure )
|
|
{
|
|
newVals.SetDefault();
|
|
_StoreNewValues( newVals );
|
|
_StoreCIValues ( newVals, pICiAdminParams );
|
|
}
|
|
}
|
|
END_CATCH
|
|
|
|
} //Refresh
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Function: BuildRegistryScopesKey
|
|
//
|
|
// Synopsis: Builds a registry key for scopes for a given catalog. This
|
|
// is needed in a couple of places.
|
|
//
|
|
// Arguments: [xKey] -- Returns the registry key
|
|
// [pwcName] -- Name of the catalog for which key is built
|
|
//
|
|
// History: 4-Nov-96 dlee created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void BuildRegistryScopesKey(
|
|
XArray<WCHAR> & xKey,
|
|
WCHAR const * pwcName )
|
|
{
|
|
unsigned cwc = wcslen( L"\\Registry\\Machine\\" );
|
|
cwc += wcslen( wcsRegCatalogsSubKey );
|
|
cwc += 3;
|
|
cwc += wcslen( pwcName );
|
|
cwc += wcslen( wcsCatalogScopes );
|
|
|
|
xKey.Init( cwc );
|
|
|
|
wcscpy( xKey.Get(), L"\\Registry\\Machine\\" );
|
|
wcscat( xKey.Get(), wcsRegCatalogsSubKey );
|
|
wcscat( xKey.Get(), L"\\" );
|
|
wcscat( xKey.Get(), pwcName );
|
|
wcscat( xKey.Get(), L"\\" );
|
|
wcscat( xKey.Get(), wcsCatalogScopes );
|
|
} //BuildRegistryScopesKey
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Function: BuildRegistryPropertiesKey
|
|
//
|
|
// Synopsis: Builds a registry key for properties for a given catalog.
|
|
//
|
|
// Arguments: [xKey] -- Returns the registry key
|
|
// [pwcName] -- Name of the catalog for which key is built
|
|
//
|
|
// History: 11-Nov-97 KyleP Stole from BuildRegistryScopesKey
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void BuildRegistryPropertiesKey( XArray<WCHAR> & xKey,
|
|
WCHAR const * pwcName )
|
|
{
|
|
unsigned cwc = wcslen( L"\\Registry\\Machine\\" );
|
|
cwc += wcslen( wcsRegCatalogsSubKey );
|
|
cwc += 3;
|
|
cwc += wcslen( pwcName );
|
|
cwc += wcslen( wcsCatalogProperties );
|
|
|
|
xKey.Init( cwc );
|
|
|
|
wcscpy( xKey.Get(), L"\\Registry\\Machine\\" );
|
|
wcscat( xKey.Get(), wcsRegCatalogsSubKey );
|
|
wcscat( xKey.Get(), L"\\" );
|
|
wcscat( xKey.Get(), pwcName );
|
|
wcscat( xKey.Get(), L"\\" );
|
|
wcscat( xKey.Get(), wcsCatalogProperties );
|
|
} //BuildRegistryPropertiesKey
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CCiRegParams::CheckNamedValues
|
|
//
|
|
// Synopsis: Asserts that each of the named values matches
|
|
// the assumption about it's definition in ciintf.idl
|
|
//
|
|
// Notes: if any of the assertions here pop up,
|
|
//
|
|
// History: 1-30-97 mohamedn created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
void CCiRegParams::_CheckNamedValues()
|
|
{
|
|
|
|
Win4Assert ( 0 == CI_AP_MERGE_INTERVAL );
|
|
Win4Assert ( 1 == CI_AP_MAX_UPDATES);
|
|
Win4Assert ( 2 == CI_AP_MAX_WORDLISTS);
|
|
Win4Assert ( 3 == CI_AP_MIN_SIZE_MERGE_WORDLISTS);
|
|
|
|
Win4Assert ( 4 == CI_AP_MAX_WORDLIST_SIZE);
|
|
Win4Assert ( 5 == CI_AP_MIN_WORDLIST_MEMORY);
|
|
Win4Assert ( 6 == CI_AP_LOW_RESOURCE_SLEEP);
|
|
Win4Assert ( 7 == CI_AP_MAX_WORDLIST_MEMORY_LOAD);
|
|
|
|
Win4Assert ( 8 == CI_AP_MAX_FRESH_COUNT);
|
|
Win4Assert ( 9 == CI_AP_MAX_SHADOW_INDEX_SIZE);
|
|
Win4Assert ( 10 == CI_AP_MIN_DISK_FREE_FORCE_MERGE);
|
|
Win4Assert ( 11 == CI_AP_MAX_SHADOW_FREE_FORCE_MERGE);
|
|
|
|
Win4Assert ( 12 == CI_AP_MAX_INDEXES);
|
|
Win4Assert ( 13 == CI_AP_MAX_IDEAL_INDEXES);
|
|
Win4Assert ( 14 == CI_AP_MIN_MERGE_IDLE_TIME);
|
|
Win4Assert ( 15 == CI_AP_MAX_PENDING_DOCUMENTS);
|
|
|
|
Win4Assert ( 16 == CI_AP_MASTER_MERGE_TIME);
|
|
Win4Assert ( 17 == CI_AP_MAX_QUEUE_CHUNKS);
|
|
Win4Assert ( 18 == CI_AP_MASTER_MERGE_CHECKPOINT_INTERVAL);
|
|
Win4Assert ( 19 == CI_AP_FILTER_BUFFER_SIZE);
|
|
|
|
Win4Assert ( 20 == CI_AP_FILTER_RETRIES);
|
|
Win4Assert ( 21 == CI_AP_FILTER_RETRY_INTERVAL);
|
|
Win4Assert ( 22 == CI_AP_MIN_IDLE_QUERY_THREADS);
|
|
Win4Assert ( 23 == CI_AP_MAX_ACTIVE_QUERY_THREADS);
|
|
|
|
Win4Assert ( 24 == CI_AP_MAX_QUERY_TIMESLICE);
|
|
Win4Assert ( 25 == CI_AP_MAX_QUERY_EXECUTION_TIME);
|
|
Win4Assert ( 26 == CI_AP_MAX_RESTRICTION_NODES);
|
|
Win4Assert ( 27 == CI_AP_CLUSTERINGTIME);
|
|
|
|
Win4Assert ( 28 == CI_AP_MAX_FILESIZE_MULTIPLIER);
|
|
Win4Assert ( 29 == CI_AP_DAEMON_RESPONSE_TIMEOUT);
|
|
Win4Assert ( 30 == CI_AP_FILTER_DELAY_INTERVAL);
|
|
Win4Assert ( 31 == CI_AP_FILTER_REMAINING_THRESHOLD);
|
|
|
|
Win4Assert ( 32 == CI_AP_MAX_CHARACTERIZATION);
|
|
Win4Assert ( 33 == CI_AP_MAX_FRESH_DELETES );
|
|
Win4Assert ( 34 == CI_AP_MAX_WORDLIST_IO );
|
|
Win4Assert ( 35 == CI_AP_WORDLIST_RESOURCE_CHECK_INTERVAL );
|
|
|
|
Win4Assert ( 36 == CI_AP_STARTUP_DELAY );
|
|
Win4Assert ( 37 == CI_AP_GENERATE_CHARACTERIZATION );
|
|
Win4Assert ( 38 == CI_AP_MIN_WORDLIST_BATTERY );
|
|
Win4Assert ( 39 == CI_AP_THREAD_PRIORITY_MERGE);
|
|
|
|
Win4Assert ( 40 == CI_AP_THREAD_PRIORITY_FILTER);
|
|
Win4Assert ( 41 == CI_AP_THREAD_CLASS_FILTER);
|
|
Win4Assert ( 42 == CI_AP_EVTLOG_FLAGS);
|
|
Win4Assert ( 43 == CI_AP_MISC_FLAGS);
|
|
|
|
Win4Assert ( 44 == CI_AP_GENERATE_RELEVANT_WORDS);
|
|
Win4Assert ( 45 == CI_AP_FFILTER_FILES_WITH_UNKNOWN_EXTENSIONS);
|
|
Win4Assert ( 46 == CI_AP_FILTER_DIRECTORIES);
|
|
Win4Assert ( 47 == CI_AP_FILTER_CONTENTS);
|
|
|
|
Win4Assert ( 48 == CI_AP_MAX_FILESIZE_FILTERED);
|
|
Win4Assert ( 49 == CI_AP_MIN_CLIENT_IDLE_TIME);
|
|
Win4Assert ( 50 == CI_AP_MAX_DAEMON_VM_USE);
|
|
Win4Assert ( 51 == CI_AP_SECQ_FILTER_RETRIES);
|
|
|
|
Win4Assert ( 52 == CI_AP_WORDLIST_USER_IDLE);
|
|
Win4Assert ( 53 == CI_AP_IS_ENUM_ALLOWED);
|
|
Win4Assert ( 54 == CI_AP_MIN_DISK_SPACE_TO_LEAVE);
|
|
|
|
//
|
|
// Place holder to mark end of values that fit in DWORD,
|
|
//
|
|
|
|
Win4Assert ( 55 == CI_AP_MAX_DWORD_VAL);
|
|
|
|
// CI_AP_MAX_VAL // mark end of params.
|
|
}
|
|
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Array of enumerated/named Ci admin. parameters, used to index
|
|
// into the array of parameters to set/get parameter values.
|
|
// ---------------------------------------------------------------------------
|
|
|
|
const CI_ADMIN_PARAMS CCiRegParams::_aParamNames[ CI_AP_MAX_VAL ] =
|
|
{
|
|
CI_AP_MERGE_INTERVAL,
|
|
CI_AP_MAX_UPDATES,
|
|
CI_AP_MAX_WORDLISTS,
|
|
CI_AP_MIN_SIZE_MERGE_WORDLISTS,
|
|
|
|
CI_AP_MAX_WORDLIST_SIZE,
|
|
CI_AP_MIN_WORDLIST_MEMORY,
|
|
CI_AP_LOW_RESOURCE_SLEEP,
|
|
CI_AP_MAX_WORDLIST_MEMORY_LOAD,
|
|
|
|
CI_AP_MAX_FRESH_COUNT,
|
|
CI_AP_MAX_SHADOW_INDEX_SIZE,
|
|
CI_AP_MIN_DISK_FREE_FORCE_MERGE,
|
|
CI_AP_MAX_SHADOW_FREE_FORCE_MERGE,
|
|
|
|
CI_AP_MAX_INDEXES,
|
|
CI_AP_MAX_IDEAL_INDEXES,
|
|
CI_AP_MIN_MERGE_IDLE_TIME,
|
|
CI_AP_MAX_PENDING_DOCUMENTS,
|
|
|
|
CI_AP_MASTER_MERGE_TIME,
|
|
CI_AP_MAX_QUEUE_CHUNKS,
|
|
CI_AP_MASTER_MERGE_CHECKPOINT_INTERVAL,
|
|
CI_AP_FILTER_BUFFER_SIZE,
|
|
|
|
CI_AP_FILTER_RETRIES,
|
|
CI_AP_FILTER_RETRY_INTERVAL,
|
|
CI_AP_MIN_IDLE_QUERY_THREADS,
|
|
CI_AP_MAX_ACTIVE_QUERY_THREADS,
|
|
|
|
CI_AP_MAX_QUERY_TIMESLICE,
|
|
CI_AP_MAX_QUERY_EXECUTION_TIME,
|
|
CI_AP_MAX_RESTRICTION_NODES,
|
|
CI_AP_CLUSTERINGTIME,
|
|
|
|
CI_AP_MAX_FILESIZE_MULTIPLIER,
|
|
CI_AP_DAEMON_RESPONSE_TIMEOUT,
|
|
CI_AP_FILTER_DELAY_INTERVAL,
|
|
CI_AP_FILTER_REMAINING_THRESHOLD,
|
|
|
|
CI_AP_MAX_CHARACTERIZATION,
|
|
CI_AP_MAX_FRESH_DELETES,
|
|
CI_AP_MAX_WORDLIST_IO,
|
|
CI_AP_WORDLIST_RESOURCE_CHECK_INTERVAL,
|
|
|
|
CI_AP_STARTUP_DELAY,
|
|
CI_AP_GENERATE_CHARACTERIZATION,
|
|
CI_AP_MIN_WORDLIST_BATTERY,
|
|
CI_AP_THREAD_PRIORITY_MERGE,
|
|
|
|
CI_AP_THREAD_PRIORITY_FILTER,
|
|
CI_AP_THREAD_CLASS_FILTER,
|
|
CI_AP_EVTLOG_FLAGS,
|
|
CI_AP_MISC_FLAGS,
|
|
|
|
CI_AP_GENERATE_RELEVANT_WORDS,
|
|
CI_AP_FFILTER_FILES_WITH_UNKNOWN_EXTENSIONS,
|
|
CI_AP_FILTER_DIRECTORIES,
|
|
CI_AP_FILTER_CONTENTS,
|
|
|
|
CI_AP_MAX_FILESIZE_FILTERED,
|
|
CI_AP_MIN_CLIENT_IDLE_TIME,
|
|
CI_AP_MAX_DAEMON_VM_USE,
|
|
CI_AP_SECQ_FILTER_RETRIES,
|
|
|
|
CI_AP_WORDLIST_USER_IDLE,
|
|
CI_AP_IS_ENUM_ALLOWED,
|
|
CI_AP_MIN_DISK_SPACE_TO_LEAVE,
|
|
|
|
//
|
|
// Place holder to mark end of values that fit in DWORD,
|
|
//
|
|
|
|
CI_AP_MAX_DWORD_VAL,
|
|
|
|
// CI_AP_MAX_VAL // mark end of params.
|
|
};
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Function: GetMaxCatalogs
|
|
//
|
|
// Synopsis: Retrieves the global max count of catalogs
|
|
//
|
|
// History: May-5-99 dlee created
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
ULONG GetMaxCatalogs()
|
|
{
|
|
//
|
|
// Make sure we only read this value once. Force a restart of the
|
|
// service to read it again.
|
|
//
|
|
|
|
static ULONG cMaxCatalogs = 0xffffffff;
|
|
|
|
if ( 0xffffffff == cMaxCatalogs )
|
|
{
|
|
CRegAccess reg( RTL_REGISTRY_CONTROL, wcsRegAdmin );
|
|
|
|
DWORD cCat = reg.Read( wcsMaxCatalogs, CI_MAX_CATALOGS_DEFAULT);
|
|
cMaxCatalogs = Range( cCat, CI_MAX_CATALOGS_MIN, CI_MAX_CATALOGS_MAX );
|
|
}
|
|
|
|
return cMaxCatalogs;
|
|
} //GetMaxCatalogs
|
|
|