#include <windows.h>
#include "LPEL_Useful.h"
#include "LPEL_Headers.h"

# define DLLEXPORT __declspec (dllexport)
# define DLLIMPORT __declspec (dllimport)


/* Sections specifics */
VOID        DLLEXPORT LPEL_ListSections(HANDLE hBinary);
BYTE        DLLEXPORT LPEL_WriteInSection(HANDLE hBinary, PUCHAR pSectionName, PUCHAR pBuf, UINT size, DWORD dwOffset);
PDWORD      DLLEXPORT LPEL_GetSectionRawAddress(HANDLE hBinary, PUCHAR pSectionName, BYTE RelativeAddress);
DWORD       DLLEXPORT LPEL_GetSectionRawSize(HANDLE hBinary, PUCHAR pSectionName);
PDWORD      DLLEXPORT LPEL_GetSectionVirtualAddress(HANDLE hBinary, PUCHAR pSectionName, BYTE RelativeAddress);
DWORD       DLLEXPORT LPEL_GetSectionFlag(HANDLE hBinary, PUCHAR pSectionName);
DWORD       DLLEXPORT LPEL_SetSectionFlag(HANDLE hBinary, PUCHAR pSectionName, DWORD dwFlag);
PUCHAR      DLLEXPORT LPEL_GetAddressSectionOwner(HANDLE hBinary, DWORD Addr);
VOID        DLLEXPORT LPEL_MemCopySection(HANDLE hBinary, PUCHAR pMem, PIMAGE_SECTION_HEADER pSection);
VOID        DLLEXPORT LPEL_MemCopySections(HANDLE hBinary, PUCHAR pMem, PDWORD pdwBytesCopied);
VOID        DLLEXPORT LPEL_EraseSection(HANDLE hBinary, PIMAGE_SECTION_HEADER pSection);
VOID        DLLEXPORT LPEL_EraseSections(HANDLE hBinary);
VOID        DLLEXPORT LPEL_EraseSectionTable(HANDLE hBinary);
VOID        DLLEXPORT LPEL_CreateSection(HANDLE hBinary, 
                                         PUCHAR pSectionName, 
                                         PDWORD pdwVirtualAddress, 
                                         DWORD dwVirtualSize, 
                                         PDWORD pdwRawAddress, 
                                         DWORD dwRawSize, 
                                         DWORD dwSectionFlag);