В данном примере для каждого входного типа будет
сгенерирован уникальный глобальный указатель типа FARPROC, фактически
являющийся ячейкой глобальной в терминах единиц трансляций таблицы функций.
Для того, чтобы определить интерфейс ячейки таблицы
функций, выясним, от чего зависит импортируемая функция. Очевидно, это имя
функции, модуль, из которого надо ее импортировать, и прокси, используемый для
определения адреса функции в загружаемой библиотеке. В связи с этим определим
класс CDynFunction, инкапсулирующий ячейку для хранения адреса функции в
глобальной таблице импортируемых функций:
template
<class Module, class Name, class Proxy>
class CDynFunction
|
Учитывая все вышесказанное, реализация класса
тривиальна и будет выглядеть так:
template <class Module, class Name, class Proxy>
class CDynFunction
{
public:
typedef CDynFunction<Module, Name, Proxy> type;
typedef Proxy proxy_type;
typedef Module module_type;
typedef Name name_type;
static typename
proxy_type::fun_type &GetProxy()
{
static typename proxy_type::fun_type
proxy = proxy_type::template Proxy<type>::ProxyFun; Рекомендуем скачать другие рефераты по теме: реферат великая, рецензия на дипломную работу образец.
Предыдущая страница реферата | 1
2
3
4
5
6
7
8
9
10
11 | Следующая страница реферата
|
|