#if !defined(__PEIMPEXP_H__)
#define __PEIMPEXP_H__

#include "PEOptions.h"

#if !defined(PE_NO_PEFILEEX)
#include "PEFileEx.h"
#else
#include "PEFile.h"
#endif

#if defined(__cplusplus)
extern "C" {
#endif

DWORD dwGetImportedFunctionEntryFromImageBase(DWORD dwImageBase,LPCSTR lpProcName);
BOOL bGetImportedFunctionNameFromImageBase(DWORD dwImageBase,DWORD dwAddr,char **szDllName,char **szFuncName);
DWORD dwGetExportedFunctionEntryFromImageBase(DWORD dwImageBase,LPCSTR lpProcName);
BOOL bFindExportedFunctionNameWithOrdinalFromImageBase(DWORD dwImageBase,WORD uwOrdinal,char *szFuncName);

#if !defined(PE_NO_PEFILEEX)
DWORD dwGetImportedFunctionEntryFromPEFile(LPPEFILE *lpPEFile,LPCSTR lpProcName);
BOOL bGetImportedFunctionNameFromPEFile(LPPEFILE *lpPEFile,DWORD dwAddr,char **szDllName,char **szFuncName);
DWORD dwGetExportedFunctionEntryFromPEFile(LPPEFILE *lpPEFile,LPCSTR lpProcName);

#if !defined(PE_NO_LOGFILE)
void LogImportedFunctionFromPEFile(LPPEFILE *lpPEFile);
void LogExportedFunctionFromPEFile(LPPEFILE *lpPEFile);
#endif // !defined(PE_NO_LOGFILE)

#endif //!defined(PE_NO_PEFILEEX)


#if defined(__cplusplus)
}
#endif

#endif // __PEIMPEXP_H__
