Interface: RExecModFile Arquivos: rexecmodfile.h Última atualização: 23/03/2003 Autor: Luiz Henrique Shigunov |
Descrição Estruturas Formato do arquivo de módulo executável |
Funções | |
0x00 - Close - Fecha um arquivo de módulo 0x09 - CheckFormat - Verifica se é um arquivo de módulo executável 0x01 - GetModuleInfo - Obtém informações do módulo 0x02 - GetUsedFunc - Obtém informações das funções utilizadas 0x03 - GetUsedFuncReloc - Obtém informações de relocação das funções utilizadas |
0x04 - LoadCode - Carrega o código do módulo 0x05 - LoadData - Carrega os dados do módulo 0x06 - LoadROData - Carrega os dados somente leitura do módulo 0x07 - Open - Abre um arquivo de módulo 0x08 - OpenFD - Abre um arquivo de módulo |
Esta página descreve a interface RExecModFile que trata do acesso aos arquivos de módulo executável.
O leitor de arquivos de módulo executável obtém os dados do módulo, código, dados, funções utilizadas, informações sobre relocação, etc.
typedef struct { char md5[16]; const char *comment; unsigned int codeSize; unsigned int roDataSize; unsigned int dataSize; unsigned int stackSize; } RExecModFile_ModuleInfo;
comment é o comentário do arquivo, codeSize o tamanho em bytes do código, roDataSize o tamanho em bytes dos dados somente leitura, dataSize o tamanho em bytes dos dados iniciados e não iniciados e stackSize o tamanho da pilha em bytes na forma de potência de 2 (12 = 4096 bytes, 14 = 16384 bytes, etc).
typedef struct { const char *interface; const char *imp; unsigned int function; unsigned int prop; } RExecModFile_UsedFuncInfo;
typedef struct { RExecModFile_UsedFuncInfo function; unsigned int offset; unsigned int prop; } RExecModFile_UsedFuncRelocInfo;
offset é o deslocamento dentro do código onde a relocação deve ocorrer.
prop pode ser 0 ou:
Os nomes não podem ser alterados, pois apontam para os nomes realmente e não para uma cópia.
int RExecModFile_Close(RExecModFile_File *file);
Esta função fecha o arquivo file.
int RExecModFile_CheckFormat(void *buf, unsigned int size);
Esta função verifica se buf de tamanho size contém o cabeçalho de arquivo de módulo executável.
buf deve conter o começo do arquivo de módulo executável.
int RExecModFile_GetModuleInfo(RExecModFile_File *file, RExecModFile_ModuleInfo *info);
Esta função obtém as informações do módulo file.
Em caso de sucesso, info será preenchido com as informações.
int RExecModFile_GetUsedFunc(RExecModFile_File *file, unsigned int n, RExecModFile_UsedFuncInfo *info);
Esta função obtém a n função usada pelo módulo file.
n começa em 0.
Em caso de sucesso, info será preenchido com as informações.
int RExecModFile_GetUsedFuncReloc(RExecModFile_File *file, unsigned int n, RExecModFile_UsedFuncRelocInfo *info);
Esta função obtém a n relocação de função usada pelo módulo file.
n começa em 0.
Em caso de sucesso, info será preenchido com as informações.
int RExecModFile_LoadCode(RExecModFile_File *file, unsigned int start, unsigned int size, void *where);
Esta função carrega o código do módulo file.
Serão carregados size bytes de código começando da posição start.
start é relativo ao início do código, sendo 0 o primeiro byte de código do módulo.
int RExecModFile_LoadData(RExecModFile_File *file, unsigned int start, unsigned int size, void *where);
Esta função carrega os dados do módulo file.
Serão carregados size bytes de dados começando da posição start.
start é relativo ao início do dados, sendo 0 o primeiro byte de dados do módulo.
Os dados não iniciados do módulo serão iniciados com zero.
int RExecModFile_LoadROData(RExecModFile_File *file, unsigned int start, unsigned int size, void *where);
Esta função carrega os dados somente leitura do módulo file.
Serão carregados size bytes de dados somente leitura começando da posição start.
start é relativo ao início do dados somente leitura, sendo 0 o primeiro byte de dados somente leitura do módulo.
int RExecModFile_Open(const char *pathname, RExecModFile_File **file);
Esta função abre o arquivo de módulo pathname.
Em caso de sucesso, file conterá o identificador do arquivo aberto.
int RExecModFile_OpenFD(FSManager_Handle *fd, int prop, RExecModFile_File **file);
Esta função abre o arquivo de módulo fd, que deve ter sido aberto pela função Open da interface FSManager.
prop deve ser zero ou:
Se a função falhar fd não será fechado.
Em caso de sucesso, file conterá o identificador do arquivo aberto.