TNB Library
公開メンバ関数 | 全メンバ一覧
CDynamicFuncT< FUNC > クラステンプレート

動的関数管理クラステンプレート [詳解]

#include <TnbDynamicFunc.h>

+ CDynamicFuncT< FUNC > の継承関係図

公開メンバ関数

 CDynamicFuncT (LPCSTR lpszDllName, LPCSTR lpszFuncName)
 コンストラクタ [詳解]
 
 CDynamicFuncT (void)
 コンストラクタ [詳解]
 
bool HasFunc (void) const
 [確認] 関数アドレスを持っているか [詳解]
 
bool LoadFunc (LPCSTR lpszDllName, LPCSTR lpszFuncName)
 [設定] 関数読込み. [詳解]
 
FUNC operator() (void) const
 [取得] 関数アドレス取得. [詳解]
 
 ~CDynamicFuncT (void)
 デストラクタ [詳解]
 

詳解

template<typename FUNC>
class TNB::CDynamicFuncT< FUNC >

動的関数管理クラステンプレート

DLL内の関数を動的に呼び出し実行することが容易にできます。
引数
FUNC関数型。それ以外は保証外。
使用例

    // 関数の型を宣言
    typedef LONG (WINAPI* P_InterlockedCompareExchange)(LONG*, LONG, LONG);
    // 動的管理クラス宣言&関数読み込み
    CDynamicFuncT<P_InterlockedCompareExchange> func1("kernel32.dll", "InterlockedCompareExchange");        
    // 実行
    LONG l1 = 0;
    LONG l2 = func1()(&l1, 1, 0); //空括弧を一つはさむのがポイント     

    // 宣言と呼び出しを一行で行なうことも出来ます。
    typedef HANDLE (WINAPI* P_IcmpCreateFile)(VOID);
    HANDLE h = CDynamicFuncT<P_IcmpCreateFile>("ICMP.dll", "IcmpCreateFile")()();
    

必要ファイル
TnbDynamicFunc.h
日付
06/09/21 新規作成
08/01/29 LoadFunc 追加

TnbDynamicFunc.h53 行目に定義があります。

構築子と解体子

◆ CDynamicFuncT() [1/2]

CDynamicFuncT ( void  )

コンストラクタ

覚え書き
LoadFunc() を使い、使用する関数を設定する必要があります。

TnbDynamicFunc.h72 行目に定義があります。

◆ CDynamicFuncT() [2/2]

CDynamicFuncT ( LPCSTR  lpszDllName,
LPCSTR  lpszFuncName 
)

コンストラクタ

引数
lpszDllNameコールしたい関数の含まれるDll名。
lpszFuncNameコールしたい関数名。
例外
CNullPointerException指定の関数が見つからない時にスローされます。

TnbDynamicFunc.h82 行目に定義があります。

◆ ~CDynamicFuncT()

~CDynamicFuncT ( void  )

デストラクタ

TnbDynamicFunc.h112 行目に定義があります。

関数詳解

◆ HasFunc()

bool HasFunc ( void  ) const

[確認] 関数アドレスを持っているか

戻り値
true持っている
flaseもっていない。

TnbDynamicFunc.h122 行目に定義があります。

◆ LoadFunc()

bool LoadFunc ( LPCSTR  lpszDllName,
LPCSTR  lpszFuncName 
)

[設定] 関数読込み.

引数
lpszDllNameコールしたい関数の含まれるDll名。
lpszFuncNameコールしたい関数名。
戻り値
true成功。
false失敗。

TnbDynamicFunc.h98 行目に定義があります。

◆ operator()()

FUNC operator() ( void  ) const

[取得] 関数アドレス取得.

覚え書き
HasFunc() の戻り値が true の時、成功します。
戻り値
関数アドレス
例外
CNullPointerException指定の関数が見つからない時にスローされます。

TnbDynamicFunc.h133 行目に定義があります。