TNB Library
|
動的関数管理クラステンプレート [詳解]
#include <TnbDynamicFunc.h>
公開メンバ関数 | |
CDynamicFuncT (LPCSTR lpszDllName, LPCSTR lpszFuncName) | |
コンストラクタ [詳解] | |
CDynamicFuncT (void) | |
コンストラクタ [詳解] | |
bool | HasFunc (void) const |
[確認] 関数アドレスを持っているか [詳解] | |
bool | LoadFunc (LPCSTR lpszDllName, LPCSTR lpszFuncName) |
[設定] 関数読込み. [詳解] | |
FUNC | operator() (void) const |
[取得] 関数アドレス取得. [詳解] | |
~CDynamicFuncT (void) | |
デストラクタ [詳解] | |
動的関数管理クラステンプレート
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 の 53 行目に定義があります。
CDynamicFuncT | ( | void | ) |
CDynamicFuncT | ( | LPCSTR | lpszDllName, |
LPCSTR | lpszFuncName | ||
) |
コンストラクタ
lpszDllName | コールしたい関数の含まれるDll名。 |
lpszFuncName | コールしたい関数名。 |
CNullPointerException | 指定の関数が見つからない時にスローされます。 |
TnbDynamicFunc.h の 82 行目に定義があります。
~CDynamicFuncT | ( | void | ) |
デストラクタ
TnbDynamicFunc.h の 112 行目に定義があります。
bool HasFunc | ( | void | ) | const |
bool LoadFunc | ( | LPCSTR | lpszDllName, |
LPCSTR | lpszFuncName | ||
) |
[設定] 関数読込み.
lpszDllName | コールしたい関数の含まれるDll名。 |
lpszFuncName | コールしたい関数名。 |
true | 成功。 |
false | 失敗。 |
TnbDynamicFunc.h の 98 行目に定義があります。
FUNC operator() | ( | void | ) | const |
[取得] 関数アドレス取得.
CNullPointerException | 指定の関数が見つからない時にスローされます。 |
TnbDynamicFunc.h の 133 行目に定義があります。