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.
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
15 years ago
|
//==========================================
|
||
|
// Matt Pietrek
|
||
|
// Microsoft Systems Journal, Feb 1997
|
||
|
// FILE: EXEFILE.H
|
||
|
//==========================================
|
||
|
#ifndef __EXEFILE_H__
|
||
|
#define __EXEFILE_H__
|
||
|
|
||
|
#ifndef __MEMMAPFL_H__
|
||
|
#include "memorymappedfile.h"
|
||
|
#endif
|
||
|
|
||
|
// MakePtr is a macro that allows you to easily add to values (including
|
||
|
// pointers) together without dealing with C's pointer arithmetic. It
|
||
|
// essentially treats the last two parameters as DWORDs. The first
|
||
|
// parameter is used to typecast the result to the appropriate pointer type.
|
||
|
#define MakePtr( cast, ptr, addValue ) (cast)( (DWORD)(ptr) + (DWORD)(addValue))
|
||
|
|
||
|
enum EXE_TYPE { exeType_Invalid, exeType_DOS, exeType_NE, exeType_VXD,
|
||
|
exeType_LX, exeType_PE };
|
||
|
|
||
|
enum errEXE_FILE { errEXE_FILE_NO_ERROR,
|
||
|
errEXE_FILE_FILE_NOT_FOUND,
|
||
|
errEXE_FILE_INVALID_FORMAT };
|
||
|
|
||
|
class EXE_FILE : public MEMORY_MAPPED_FILE
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
EXE_FILE( PSTR pszFileName );
|
||
|
~EXE_FILE( ){ ; }
|
||
|
|
||
|
BOOL IsValid( void ){ return errMMF_NoError == m_errorType; }
|
||
|
|
||
|
errEXE_FILE GetErrorType( void ){ return m_errorType; }
|
||
|
|
||
|
DWORD GetSecondaryHeaderOffset( void ){ return m_secondaryHeaderOffset; }
|
||
|
|
||
|
EXE_TYPE GetExeType( void ){ return m_exeType; }
|
||
|
|
||
|
PSTR GetFileTypeDescription( void );
|
||
|
|
||
|
protected:
|
||
|
|
||
|
errEXE_FILE m_errorType;
|
||
|
|
||
|
private:
|
||
|
|
||
|
LONG m_secondaryHeaderOffset;
|
||
|
EXE_TYPE m_exeType;
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif
|