# funcman/include/dllmain.h

# 1 ファイル

## 1.1 funcman/include/dllmain.h

汎用 DLL ロード・アンロードフックヘッダー。

このヘッダーをインクルードした .c ファイルに対して、プラットフォームごとの DLL ロード・アンロードフックを提供します。

インクルード元の .c ファイルは以下の関数を定義する必要があります。

- onLoad() : ライブラリロード時に呼び出される関数
- onUnload(): ライブラリアンロード時に呼び出される関数

Linux : __attribute__((constructor/destructor)) により onLoad / onUnload が 自動的に呼び出されます。

Windows: DllMain の DLL_PROCESS_ATTACH / DLL_PROCESS_DETACH により onLoad / onUnload が呼び出されます。

### 1.1.1 作者

c-modenization-kit sample team

### 1.1.2 バージョン

1.0.0

### 1.1.3 日付

2026/02/23

### 1.1.4 著作権

Copyright (C) CompanyName, Ltd. 2026. All rights reserved.

# 2 関数

## 2.1 onLoad

    static void onLoad ( void )

ライブラリのロード時に呼び出されるフック関数。

このヘッダーをインクルードする .c ファイルで定義する必要があります。
Linux では dlopen() またはプロセス起動時に、 Windows では LoadLibrary() またはプロセス起動時に呼び出されます。

## 2.2 onUnload

    static void onUnload ( void )

ライブラリのアンロード時に呼び出されるフック関数。

このヘッダーをインクルードする .c ファイルで定義する必要があります。
Linux では dlclose() またはプロセス正常終了時に、 Windows では FreeLibrary() またはプロセス正常終了時に呼び出されます。

## 2.3 __attribute__

    __attribute__ ( (constructor) )

共有ライブラリロード時のコンストラクタ (Linux 専用)。

__attribute__((constructor)) により、dlopen() または プロセス起動時に自動的に呼び出されます。

## 2.4 __attribute__

    __attribute__ ( (destructor) )

共有ライブラリアンロード時のデストラクタ (Linux 専用)。

__attribute__((destructor)) により、dlclose() または プロセス正常終了時に自動的に呼び出されます。

# 3 定数、マクロ

## 3.1 DLLMAIN_INFO_MSG

    #define DLLMAIN_INFO_MSG ( msg )
        syslog(LOG_INFO, (msg))

DllMain / constructor / destructor コンテキストで安全に 情報メッセージを出力するマクロ。

DllMain コンテキストおよび constructor / destructor コンテキストでは 呼び出し可能な API に制限があります。
Linux では syslog(LOG_INFO, …) を、Windows では OutputDebugStringA を使用することで制約を回避します。

### 3.1.1 引数

- msg [in] 出力するメッセージ文字列リテラル。