Interface: RSysModFile Arquivos: rsysmodfile.h Última atualização: 29/07/2002 Autor: Luiz Henrique Shigunov |
Descrição Estruturas Formato do arquivo de módulo do sistema |
Funções | |
0x00 - Close - Fecha o arquivo de módulo 0x01 - GetFuncsInfo - Obtém informações sobre as funções 0x02 - GetImpInfo - Obtém informações sobre uma implementação 0x03 - GetInterInfo - Obtém informações sobre uma interface 0x04 - GetModuleInfo - Obtém informações sobre o módulo |
0x05 - GetUsedFunc - Obtém informações sobre uma função utilizada pelo módulo 0x06 - GetUsedFuncReloc - Obtém informações sobre uma relocação das funções utilizadas pelo módulo 0x07 - LoadCode - Carrega o código do módulo 0x08 - LoadData - Carrega os dados do módulo 0x09 - Open - Abre um arquivo de módulo |
Esta página descreve a interface RSysModFile que trata do acesso aos arquivos de módulo do sistema.
O leitor de arquivos de módulos do sistema obtém as informações dos arquivos de módulos do sistema. Essas informações incluem os dados do módulo, código, dados, informações sobre as funções, funções utilizadas, informações sobre relocação, etc.
typedef struct { unsigned int codeStart; unsigned int prop; } RSysModFile_FunctionInfo;
typedef struct { const char *name; } RSysModFile_ImpInfo;
typedef struct { const char *name; unsigned int nFunctions; } RSysModFile_InterInfo;
typedef struct { char md5[16]; const char *comment; void *phase0Start; void *phase1Start; void *shutdown; unsigned int codeSize; unsigned int dataSize; unsigned int version; unsigned int prop; } RSysModFile_ModuleInfo;
typedef struct { const char *interface; const char *imp; unsigned int function; } RSysModFile_UsedFuncInfo;
typedef struct { const char *interface; const char *imp; unsigned int function; unsigned int offset; unsigned int prop; } RSysModFile_UsedFuncRelocInfo;
Os nomes não podem ser alterados, pois apontam para os nomes realmente e não para uma cópia.
int RSysModFile_Close(RSysModFile_File *file);
Esta função fecha o arquivo file.
int RSysModFile_GetFuncsInfo(RSysModFile_File *file, unsigned int interface, unsigned int imp, RSysModFile_FunctionInfo *info);
Esta função obtém as informações de todas as funções da implementação imp da interface interface do arquivo file.
info tem que ser um vetor com no mínimo a mesma quantidade de posições que o número de funções da interface interface.
Em caso de sucesso, info será preenchido com as informações.
int RSysModFile_GetImpInfo(RSysModFile_File *file, unsigned int interface, unsigned int imp, RSysModFile_ImpInfo *info);
Esta função obtém as informações da implementação imp da interface interface do arquivo file.
interface é o mesmo usado na função GetInterInfo.
Em caso de sucesso, info será preenchido com as informações.
int RSysModFile_GetInterInfo(RSysModFile_File *file, unsigned int interface, RSysModFile_InterInfo *info);
Esta função obtém as informações da interface interface do arquivo file.
interface é o mesmo número usado na função GetFuncInfo.
Em caso de sucesso, info será preenchido com as informações.
int RSysModFile_GetModuleInfo(RSysModFile_File *file, RSysModFile_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 RSysModFile_GetUsedFunc(RSysModFile_File *file, unsigned int n, RSysModFile_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 RSysModFile_GetUsedFuncReloc(RSysModFile_File *file, unsigned int n, RSysModFile_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 RSysModFile_LoadCode(RSysModFile_File *file, unsigned int start, unsigned int size, void *where, void *codeStart, void *dataStart);
Esta função carrega o código do módulo file.
dataStart é um ponteiro para o início dos dados do módulo, codeStart um ponteiro para o início do código do módulo e where o ponteiro para a área de memória onde colocar o código carregado.
dataStart e codeStart são usados para fazer a relocação no código.
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 RSysModFile_LoadData(RSysModFile_File *file, unsigned int start, unsigned int size, void *where, void *codeStart, void *dataStart);
Esta função carrega os dados do módulo file.
dataStart é um ponteiro para o início dos dados do módulo, codeStart um ponteiro para o início do código do módulo e where o ponteiro para a área de memória onde colocar os dados carregados.
dataStart e codeStart são usados para fazer a relocação nos dados.
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 RSysModFile_Open(const char *pathname, RSysModFile_File **file);
Esta função abre o arquivo de módulo pathname.
Em caso de sucesso, file conterá o identificador do arquivo aberto.