|
TNB Library
|
動的関数管理クラステンプレート [詳解]
#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) | |
| デストラクタ [詳解] | |
動的関数管理クラステンプレート
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 行目に定義があります。