Leaked source code of windows server 2003
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.
 
 
 
 
 
 

109 lines
3.5 KiB

//
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
//
#ifndef SIMC_REGISTRY_CONTROLLER
#define SIMC_REGISTRY_CONTROLLER
/*
* This file contains the classes that are used to manipulate the
* registry by the SNMP Compiler. The compiler stores MIB dependency
* information in the registry, as per the "compiler requirements spec"
*/
// The class that represents the mapping between a file name
// and a module name
class SIMCFileMapElement
{
public:
CString fileName;
CString moduleName;
SIMCFileMapElement(const CString mName, const CString fName)
: moduleName(mName), fileName(fName)
{}
SIMCFileMapElement() {}
};
// A list of such mappings
typedef CList<SIMCFileMapElement, SIMCFileMapElement> SIMCFileMapList;
// The class that controls the registry, and has functions for retreiving
// mappings, adding/deleting mappings etc. from the registry. Most
// functions are static
class SIMCRegistryController
{
private:
// The keys in the registry that the SNMP compiler uses.
// These are defined in the "compiler requirements spec"
static const char *rootKeyName;
static const char *filePaths;
static const char *fileSuffixes;
static const char *mibTable;
// Checks whether the file name is a path name
static BOOL IsAbsolutePath(CString pathName);
static BOOL GetMibFileFromMap(const SIMCFileMapList& theList,
const CString& module,
CString &file);
static BOOL ShouldAddDependentFile(SIMCFileMapList& dependencyList,
const CString& dependentModule,
CString& dependentFile,
const SIMCFileMapList& priorityList);
static BOOL IsModulePresent(SIMCFileMapList& dependencyList,
const CString& dependentModule);
static BOOL IsFilePresent(SIMCFileMapList& dependencyList,
const CString& dependentFile);
public:
// Gets the entry from the lookup table
static BOOL GetMibFileFromRegistry(const char * const moduleName,
CString &fullPathName);
// Prints out the lookup table on to stdout
static BOOL ListMibTable();
// Gets the list of suffixes from teh registry
static BOOL GetMibSuffixes(SIMCStringList & theList);
// Gets the list of paths from teh registry
static BOOL GetMibPaths(SIMCStringList & theList);
// Deletes the lookup table from the registry
static BOOL DeleteMibTable();
// Deletes the lookup table and rebuilds it.
// Returns the # of entries entered
static long RebuildMibTable();
// Builds the lookup table afresh, and gets it
static long GetFileMap(SIMCFileMapList &theList);
// Adds the mappings from a directory to theList
static long RebuildDirectory(const CString& directory,
const SIMCStringList& suffixList,
SIMCFileMapList &theList);
// Adds the mapping of a file to theList
static BOOL ProcessFile(const char * const fileName,
SIMCFileMapList &theList);
// Given a priority list of mappings, builds a dependency list
// using a depth first search using the priority mappings first,
// and then the registry lookup table to locate any required mib modules
static BOOL GetDependentModules(const char * const fileName,
SIMCFileMapList& dependencyList,
const SIMCFileMapList& priorityList);
// Deletes a specified directory from the list of paths in the registry
static BOOL DeleteRegistryDirectory(const CString& directoryName);
// Adds a specified directory to the list of paths in the registry
static BOOL AddRegistryDirectory(const CString& directoryName);
};
#endif