84
правкиИзменения
→Регистрация
== Регистрация ==
Приложение должно быть зарегестрировано в системе [[AFW]], делается это функцией [[APP_Register]]. Её параметры Регистрируется приложение один раз и удалить регистрацию потом будет невозможно, а эльф обычно должен выгружаться из памяти, поэтому нужно исключить совпадение ивентов для выгружаемого эльфа, для этого используется функция [[ldrRequestEventBase]], которая каждый раз возвращает уникальный свободный код ивента который можно использовать как "свои" ивенты. Даже более, следующие 63 кода тоже свободны и никогда не встретятся. При регистрации система запоминает не ивенты, а адресс таблицы, а т.к. память эльфа может быть освобождена данные могут быть изменениы и это может быть источником глюков, от этого никуда не деться. Пример:<pre>UINT32 reserve;UINT32 status; reserve = ldrRequestEventBase();elf.name = (char *)app_name;elf.app = NULL;elf.evbase = reserve ++;status = APP_Register( reg_tbl&elf.evbase, // указатель на первый элемент таблицы ивентов регистрацииreg_count1, // количество элементов в этой таблице state_handling_table, // таблица, описывающая все состояния приложения APP_STATE_MAX, // количество элементов в этой таблице
(void *) AppStart ); // функция старта приложения
if ( status != RESULT_OK )
return status;
// ...
</pre>
== Старт ==