76 lines
1.4 KiB
C++
76 lines
1.4 KiB
C++
#pragma once
|
|
#include "modlist.h"
|
|
|
|
class CModuleListSet;
|
|
|
|
enum MTE_FLAGS
|
|
{
|
|
MTE_DEFAULT = 0x00000000,
|
|
MTE_DELAY_LOADED = 0x00000001,
|
|
};
|
|
|
|
class CModuleTreeEntry
|
|
{
|
|
public:
|
|
CModule* m_pModule;
|
|
CModule* m_pImportModule;
|
|
|
|
DWORD m_dwFlags; // MTE_FLAGS
|
|
};
|
|
|
|
|
|
// Flags for HrGetModuleBindings.
|
|
//
|
|
enum GMB_FLAGS
|
|
{
|
|
GMBF_DEFAULT = 0x00000000,
|
|
GMBF_ADD_TO_MLSET = 0x00000001,
|
|
};
|
|
|
|
class CModuleTree : public vector<CModuleTreeEntry>
|
|
{
|
|
public:
|
|
CModuleList Modules;
|
|
|
|
public:
|
|
~CModuleTree ();
|
|
|
|
HRESULT
|
|
HrAddEntry (
|
|
IN CModule* pMod,
|
|
IN CModule* pImport,
|
|
IN DWORD dwFlags);
|
|
|
|
HRESULT
|
|
HrGetModuleBindings (
|
|
IN const CModule* pMod,
|
|
IN DWORD dwFlags /* GMB_FLAGS */,
|
|
OUT CModuleListSet* pSet) const;
|
|
|
|
CModuleTreeEntry*
|
|
PFindFirstEntryWithModule (
|
|
IN const CModule* pMod) const;
|
|
|
|
CModuleTreeEntry*
|
|
PFindFirstEntryAfterModuleGroup (
|
|
IN const CModule* pMod) const;
|
|
|
|
CModuleTreeEntry*
|
|
PBinarySearchEntry (
|
|
IN const CModule* pMod,
|
|
IN const CModule* pImport,
|
|
OUT CModuleTreeEntry** pInsertPosition OPTIONAL) const;
|
|
|
|
private:
|
|
CModuleTreeEntry*
|
|
PBinarySearchEntryByModule (
|
|
IN const CModule* pMod,
|
|
OUT CModuleTreeEntry** pInsertPosition OPTIONAL) const;
|
|
|
|
#if DBG
|
|
VOID DbgVerifySorted ();
|
|
#else
|
|
VOID DbgVerifySorted () {}
|
|
#endif
|
|
};
|