You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
C++
58 lines
1.7 KiB
C++
15 years ago
|
//==========================================
|
||
|
// Matt Pietrek
|
||
|
// Microsoft Systems Journal, Feb 1997
|
||
|
// FILE: DEPENDENCYLIST.H
|
||
|
//==========================================
|
||
|
#ifndef __DEPLIST_H__
|
||
|
#define __DEPLIST_H__
|
||
|
|
||
|
#ifndef __MODULEFILEINFO_H__
|
||
|
#include "modulefileinfo.h"
|
||
|
#endif
|
||
|
|
||
|
enum errModuleDependencyList { errMDL_NO_ERROR,
|
||
|
errMDL_FILE_NOT_FOUND,
|
||
|
errMDL_NOT_PE_FILE,
|
||
|
errMDL_GENERAL_FAILURE };
|
||
|
|
||
|
//
|
||
|
// The MODULE_DEPENDENCY_LIST class creates a linked list of MODULE_FILE_INFO
|
||
|
// structures. In theory, this list will represent every executable file
|
||
|
// loaded by the Win32 loader when the executable is loaded. The class creates
|
||
|
// the list by starting with the file passed to the constructor, and recursing
|
||
|
// through all the import tables.
|
||
|
//
|
||
|
class MODULE_DEPENDENCY_LIST
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
MODULE_DEPENDENCY_LIST( PSTR pszFileName );
|
||
|
|
||
|
~MODULE_DEPENDENCY_LIST( );
|
||
|
|
||
|
BOOL IsValid( void ){ return (BOOL)(m_errorType == errMDL_NO_ERROR); }
|
||
|
|
||
|
errModuleDependencyList GetErrorType( void ){ return m_errorType; }
|
||
|
|
||
|
PSTR GetErrorString( void );
|
||
|
|
||
|
PMODULE_FILE_INFO GetNextModule( PMODULE_FILE_INFO p );
|
||
|
|
||
|
PMODULE_FILE_INFO LookupModule( PSTR pszFileName, BOOL fFullName );
|
||
|
|
||
|
unsigned GetNumberOfModules( void ){ return m_cModules; }
|
||
|
|
||
|
protected:
|
||
|
|
||
|
unsigned m_cModules; // Number of modules in list
|
||
|
|
||
|
PMODULE_FILE_INFO m_pList; // Pointer to head of linked list
|
||
|
|
||
|
// Recursively adds modules to the list
|
||
|
errModuleDependencyList AddModule( PSTR pszFullName );
|
||
|
|
||
|
errModuleDependencyList m_errorType; // Error type
|
||
|
};
|
||
|
|
||
|
#endif
|