ローダー

API

ローダー関連のAPIを使用するには、solid_loader.h をインクルードしてください。

#include "solid_loader.h"

ローダーはロード元として SOLIDのファイルシステム を使用します。

SOLID_LDR_GetAddr

int SOLID_LDR_GetAddr(const char *pName, SOLID_ADDRESS *pAddr)

エクスポートされたシンボルのアドレスを取得します

同じシンボル名で複数のアドレス値が登録された場合、 最後に登録されたアドレス値が取得できます。

パラメータ:
  • pName -- シンボル名(文字列,NUL終端)

  • pAddr -- 取得したアドレス

戻り値:

SOLID_LDR_GetDllAddr

int SOLID_LDR_GetDllAddr(const char *pDllName, const char *pSymbolName, SOLID_ADDRESS *pAddr)

ロードオブジェクトを指定してエクスポートされたシンボルのアドレスを取得します

パラメータ:
  • pDllName -- 検索を行うロードオブジェクト名(文字列,NUL終端)

  • pSymbolName -- シンボル名(文字列,NUL終端)

  • pAddr -- 取得したアドレス

戻り値:

SOLID_LDR_LoadFile

int SOLID_LDR_LoadFile(const char *pName, const char *pFilename)

ファイルシステムからロード処理を行います

パラメータ:
  • pName -- ロードオブジェクト名(文字列,NUL終端)

  • pFilename -- ロードするファイル名(文字列,NUL終端)

戻り値:

SOLID_LDR_LoadDLL

int SOLID_LDR_LoadDLL(const char *pName, const char *pFilename, SOLID_ADDRESS loadAddr)

ファイルシステムからDLLのロード処理を行います

再配置可能なロードオブジェクトを指定アドレスにロードします。 ロード位置を指定しない時は、SOLID_LDR_ADDR_DLLAREA (-1) を指定してください。 この時、DLLのロード領域として使用可能な領域を DLLAREA としてメモリマップエディタで登録しておく必要があります。

パラメータ:
  • pName -- ロードオブジェクト名(文字列,NUL終端)

  • pFilename -- ロードするファイル名(文字列,NUL終端)

  • loadAddr -- ロードする先頭アドレス

戻り値:

SOLID_LDR_CanExec

int SOLID_LDR_CanExec(const char *pName, SOLID_ADDRESS *pAddr)

指定されたロードオブジェクトが実行可能かを確認します

パラメータ:
  • pName -- ロードオブジェクト名(文字列,NUL終端)

  • pAddr -- 実行開始アドレス

戻り値:

  • 1: 実行可能

  • 0: 実行不可(シンボル解決が終了していない)

  • それ以外: エラー

SOLID_LDR_UnLoad

int SOLID_LDR_UnLoad(const char *pName)

指定されたロードオブジェクトをアンロードします

パラメータ:
  • pName -- ロードオブジェクト名(文字列,NUL終端)

戻り値:

SOLID_LDR_RegisterSymbol

int SOLID_LDR_RegisterSymbol(const char *pName, SOLID_ADDRESS addr)

シンボル情報を登録します

パラメータ:
  • pName -- シンボル名(文字列,NUL終端)

  • addr -- アドレス

戻り値:

SOLID_LDR_CheckUnresolved

int SOLID_LDR_CheckUnresolved(void)

未解決シンボルの数を確認します

戻り値:

未解決シンボルの総数

SOLID_LDR_MGR_INFO

typedef struct _SOLID_LDR_MGR_INFO_ SOLID_LDR_MGR_INFO
struct _SOLID_LDR_MGR_INFO_

説明

ローダー管理領域メモリ使用状況構造体

定義

typedef struct _SOLID_LDR_MGR_INFO_ {
    size_t total;
    size_t used;
} SOLID_LDR_MGR_INFO;

メンバー

size_t total

管理領域総サイズ

size_t used

管理領域使用量

SOLID_LDR_GetManagedAreaInfo

int SOLID_LDR_GetManagedAreaInfo(SOLID_LDR_MGR_INFO *pInfo)

ローダーの管理メモリ領域の使用状況を取得します。

パラメータ:
  • pInfo -- 使用状況を取得するバッファ

戻り値: