Dados gerais

Interface: RExecModFile
Arquivos: rexecmodfile.h
Última atualização: 23/03/2003
Autor: Luiz Henrique Shigunov
Informações

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

Descrição

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.

Estruturas

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.

0x00 - Close

Sintaxe

int RExecModFile_Close(RExecModFile_File *file);

Propriedades

Descrição

Esta função fecha o arquivo file.

Valor de retorno

0x09 - CheckFormat

Sintaxe

int RExecModFile_CheckFormat(void *buf, unsigned int size);

Propriedades

Descrição

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.

Valor de retorno

0x01 - GetModuleInfo

Sintaxe

int RExecModFile_GetModuleInfo(RExecModFile_File *file, RExecModFile_ModuleInfo *info);

Propriedades

Descrição

Esta função obtém as informações do módulo file.

Em caso de sucesso, info será preenchido com as informações.

Valor de retorno

0x02 - GetUsedFunc

Sintaxe

int RExecModFile_GetUsedFunc(RExecModFile_File *file, unsigned int n, RExecModFile_UsedFuncInfo *info);

Propriedades

Descrição

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.

Valor de retorno

0x03 - GetUsedFuncReloc

Sintaxe

int RExecModFile_GetUsedFuncReloc(RExecModFile_File *file, unsigned int n, RExecModFile_UsedFuncRelocInfo *info);

Propriedades

Descrição

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.

Valor de retorno

0x04 - LoadCode

Sintaxe

int RExecModFile_LoadCode(RExecModFile_File *file, unsigned int start, unsigned int size, void *where);

Propriedades

Descrição

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.

Valor de retorno

0x05 - LoadData

Sintaxe

int RExecModFile_LoadData(RExecModFile_File *file, unsigned int start, unsigned int size, void *where);

Propriedades

Descrição

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.

Valor de retorno

0x06 - LoadROData

Sintaxe

int RExecModFile_LoadROData(RExecModFile_File *file, unsigned int start, unsigned int size, void *where);

Propriedades

Descrição

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.

Valor de retorno

0x07 - Open

Sintaxe

int RExecModFile_Open(const char *pathname, RExecModFile_File **file);

Propriedades

Descrição

Esta função abre o arquivo de módulo pathname.

Em caso de sucesso, file conterá o identificador do arquivo aberto.

Valor de retorno

0x08 - OpenFD

Sintaxe

int RExecModFile_OpenFD(FSManager_Handle *fd, int prop, RExecModFile_File **file);

Propriedades

Descrição

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.

Valor de retorno