From 14c7f45cdae826f88dc539c8c38dd95caf305731 Mon Sep 17 00:00:00 2001 From: Maurus Cuelenaere Date: Fri, 11 Jul 2008 15:50:46 +0000 Subject: Add zook's ZenUtils to SVN git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18010 a1c6a512-1295-4272-9138-f99709370657 --- .../libraries/pelib-0.9/pelib/ExportDirectory.h | 133 +++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100755 utils/zenutils/libraries/pelib-0.9/pelib/ExportDirectory.h (limited to 'utils/zenutils/libraries/pelib-0.9/pelib/ExportDirectory.h') diff --git a/utils/zenutils/libraries/pelib-0.9/pelib/ExportDirectory.h b/utils/zenutils/libraries/pelib-0.9/pelib/ExportDirectory.h new file mode 100755 index 0000000000..17a7e57020 --- /dev/null +++ b/utils/zenutils/libraries/pelib-0.9/pelib/ExportDirectory.h @@ -0,0 +1,133 @@ +/* +* ExportDirectory.h - Part of the PeLib library. +* +* Copyright (c) 2004 - 2005 Sebastian Porst (webmaster@the-interweb.com) +* All rights reserved. +* +* This software is licensed under the zlib/libpng License. +* For more details see http://www.opensource.org/licenses/zlib-license.php +* or the license information file (license.htm) in the root directory +* of PeLib. +*/ + +#ifndef EXPORTDIRECTORY_H +#define EXPORTDIRECTORY_H +#include "PeHeader.h" + +namespace PeLib +{ + /// Class that handles the export directory. + /** + * This class handles the export directory. + * \todo getNameString + **/ +// template + class ExportDirectory + { + private: + /// Used to store all necessary information about a file's exported functions. + PELIB_IMAGE_EXP_DIRECTORY m_ied; + + public: + /// Add another function to be exported. + void addFunction(const std::string& strFuncname, dword dwFuncAddr); // EXPORT + unsigned int calcNumberOfFunctions() const; // EXPORT + void clear(); // EXPORT + /// Identifies a function through it's name. + int getFunctionIndex(const std::string& strFunctionName) const; // EXPORT + /// Read a file's export directory. + int read(const std::string& strFilename, unsigned int uiOffset, unsigned int uiSize, const PeHeader& pehHeader); // EXPORT + /// Rebuild the current export directory. + void rebuild(std::vector& vBuffer, dword dwRva) const; // EXPORT + void removeFunction(unsigned int index); // EXPORT + /// Returns the size of the current export directory. + unsigned int size() const; // EXPORT + /// Writes the current export directory to a file. + int write(const std::string& strFilename, unsigned int uiOffset, unsigned int uiRva) const; // EXPORT + + /// Changes the name of the file (according to the export directory). + void setNameString(const std::string& strFilename); // EXPORT + std::string getNameString() const; // EXPORT + + /// Get the name of an exported function. + std::string getFunctionName(unsigned int index) const; // EXPORT + /// Get the ordinal of an exported function. + word getFunctionOrdinal(unsigned int index) const; // EXPORT + /// Get the address of the name of an exported function. + dword getAddressOfName(unsigned int index) const; // EXPORT + /// Get the address of an exported function. + dword getAddressOfFunction(unsigned int index) const; // EXPORT + + /// Change the name of an exported function. + void setFunctionName(unsigned int index, const std::string& strName); // EXPORT + /// Change the ordinal of an exported function. + void setFunctionOrdinal(unsigned int index, word wValue); // EXPORT + /// Change the address of the name of an exported function. + void setAddressOfName(unsigned int index, dword dwValue); // EXPORT + /// Change the address of an exported function. + void setAddressOfFunction(unsigned int index, dword dwValue); // EXPORT + + /* + word getFunctionOrdinal(std::string strFuncname) const; + dword getAddressOfName(std::string strFuncname) const; + dword getAddressOfFunction(std::string strFuncname) const; + + void setFunctionOrdinal(std::string strFuncname, word wValue); + void setAddressOfName(std::string strFuncname, dword dwValue); + void setAddressOfFunction(std::string strFuncname, dword dwValue); + */ + + /// Return the Base value of the export directory. + dword getBase() const; // EXPORT + /// Return the Characteristics value of the export directory. + dword getCharacteristics() const; // EXPORT + /// Return the TimeDateStamp value of the export directory. + dword getTimeDateStamp() const; // EXPORT + /// Return the MajorVersion value of the export directory. + word getMajorVersion() const; // EXPORT + /// Return the MinorVersion value of the export directory. + word getMinorVersion() const; // EXPORT + /// Return the Name value of the export directory. + dword getName() const; // EXPORT + /// Return the NumberOfFunctions value of the export directory. + dword getNumberOfFunctions() const; // EXPORT + /// Return the NumberOfNames value of the export directory. + dword getNumberOfNames() const; // EXPORT + /// Return the AddressOfFunctions value of the export directory. + dword getAddressOfFunctions() const; // EXPORT + /// Return the AddressOfNames value of the export directory. + dword getAddressOfNames() const; // EXPORT + /// Returns the AddressOfNameOrdinals value. + dword getAddressOfNameOrdinals() const; // EXPORT + +/* /// Returns the number of NameOrdinals. + dword getNumberOfNameOrdinals() const; // EXPORT + /// Returns the number of AddressOfFunctionNames values. + dword getNumberOfAddressOfFunctionNames() const; // EXPORT + /// Returns the number of AddressOfFunction values. + dword getNumberOfAddressOfFunctions() const; // EXPORT +*/ + /// Set the Base value of the export directory. + void setBase(dword dwValue); // EXPORT + /// Set the Characteristics value of the export directory. + void setCharacteristics(dword dwValue); // EXPORT + /// Set the TimeDateStamp value of the export directory. + void setTimeDateStamp(dword dwValue); // EXPORT + /// Set the MajorVersion value of the export directory. + void setMajorVersion(word wValue); // EXPORT + /// Set the MinorVersion value of the export directory. + void setMinorVersion(word wValue); // EXPORT + /// Set the Name value of the export directory. + void setName(dword dwValue); // EXPORT + /// Set the NumberOfFunctions value of the export directory. + void setNumberOfFunctions(dword dwValue); // EXPORT + /// Set the NumberOfNames value of the export directory. + void setNumberOfNames(dword dwValue); // EXPORT + /// Set the AddressOfFunctions value of the export directory. + void setAddressOfFunctions(dword dwValue); // EXPORT + /// Set the AddressOfNames value of the export directory. + void setAddressOfNames(dword dwValue); // EXPORT + void setAddressOfNameOrdinals(dword value); // EXPORT + }; +} +#endif -- cgit v1.2.3