API пользовательских функций


Интерфейс пользовательских функций описан в файле include/VMSyscall.hpp. Каждая функция является классом, наследуемым от SyscallHandler. Класс содержит шесть методов, из которых только два (Handler и GetName) являются полностью виртуальными. Таком образом, минимальная реализация класса пользовательской функции должна предоставлять эти два метода.

Методы и их назначение перечислены ниже:

INT_32 InitHandler(CDT & oCDT)

Инициализация объекта класса.
oCDT - набор данных, неконстантная ссылка.
Метод может использоваться для передачи пользовательской функции необходимых параметров.


INT_32 PreExecuteSetup(OutputCollector         & oCollector,
                       CDT                     & oCDT,
                       const ReducedStaticText & oSyscalls,
                       const ReducedStaticData & oStaticData,
                       const ReducedStaticText & oStaticText);
Метод, вызываемый шаблонизатором перед запсуком байткода на исполнение. oCollector - коллектор выводимых данных
oCDT - набор переменных, переданных в шаблонизатор
oSyscalls - сегмент системных вызовов
oStaticData - сегмент статических данных
oStaticData - сегмент статического текста


INT_32 Handler(CDT            * aArguments,
               const UINT_32  & iArgNum,
               CDT            & oCDTRetVal)
Обработчик функции.
aArguments - набор переданных функции аргументов. Порядок следования анргументов - обратный.
iArgNum - количество переданных аргументов
oCDTRetVal - фозвращаемое функцией значение В случае успешного выполнения метод должен вернуть 0. Любое другое возвращенное значение явлется признаком ошибки.


CCHAR_P GetName()

Получение имени функции.
Метод возвращает имя функции - asciz строку.


INT_32 GetVersion() const

Получение версии API функции.
Зарезервировано для использования в будущем.


INT_32 DestroyHandler(CDT & oCDT) throw()
Разрушение объекта класса.
oCDT - набор данных, неконстантная ссылка.
Метод может использоваться для передачи из пользовательской функции статистических или иных параметров.


Пример пользовательской функции можно найти на сайте проекта: http://ctpp.havoc.ru/stored_func.html
Copyright © 2003 - 2009 CTPP Dev. Team | http://ctpp.havoc.ru/