Page 8 of 15
Re: C--
Posted: Wed Sep 18, 2013 12:16 am
by punk_joker
Теоретически, libini я подключил правильно. Но при попытке чтения значения программа вылетает. В чем проблема не пойму.
Re: C--
Posted: Wed Sep 18, 2013 12:25 am
by punk_joker
Те программы которые раньше работали с ini, написанные на C--, также перестали работать
Re: C--
Posted: Wed Sep 18, 2013 7:29 am
by Mario_r4
В LibINI что то фиксили и что то добавляли. Проверь предыдущие ревизии.
Posted: Wed Sep 18, 2013 8:41 am
by punk_joker
Спасибо. Кажется я понял возможную причину проблемы.
Re: C--
Posted: Wed Sep 18, 2013 4:02 pm
by punk_joker
Версия оказалась не верной. Надо дальше разбираться.
Re: C--
Posted: Fri Sep 20, 2013 11:45 pm
by punk_joker
Импорт библиотеки вроде как работает всетаки, покрайней мере программа не вылетает. Но при попытке получить значение ключа программа сразу же вылетает. Причины пока выяснить несмог

Re: C--
Posted: Sat Sep 21, 2013 10:10 am
by Asper
Для
библиотек mike.dld в
load_dll2 третий параметр должен быть равен
1, для остальных библиотек
0. Этот параметр указывает нужна ли
предварительная инициализация библиотеки.
Re: C--
Posted: Sat Sep 21, 2013 5:30 pm
by punk_joker
Идиот я. Непосмотрел доску со стороны ядра. После вылета программы, на доске появляются следующие строчки
Spoiler:
Code: Select all
K : Process - forced terminate PID: 00000011 [TMPDISK]
K : Page fault
K : EAX : 00000000 EBX : 00000000 ECX : FFFFFFEC
K : EDX : 00000D63 ESI : 000AFF74 EDI : 000046A1
K : EBP : 000AFF1D EIP : 00000006 ESP : 000AFEBC
K : Flags : 00011206 CS : 0000001B (application)
K : Stack dump:
K : [ESP+00]: 000AFEC0 [ESP+04]: 000AFF1C [ESP+08]: 70002290
K : [ESP+12]: 0000010C [ESP+16]: 000046A1 [ESP+20]: 000AFF75
K : [ESP+24]: 00000010 [ESP+28]: 00000000 [ESP+32]: 00000000
Пока что мне это ниочем не говорит. Потому надеюсь на вашу помощь.
Re: C--
Posted: Sat Sep 21, 2013 5:54 pm
by Mario_r4
Предлагаю расставить маркеры - названия процедур выводимые на доску отладки, если в C-- нет способа получить адреса процедур после компиляции.
Re: C--
Posted: Sat Sep 21, 2013 6:35 pm
by punk_joker
Mario_r4 wrote:Предлагаю расставить маркеры - названия процедур выводимые на доску отладки, если в C-- нет способа получить адреса процедур после компиляции.
Тоесть в каждой процедуре сделать вывод имени процедуры на доску отладки?
Re: C--
Posted: Sat Sep 21, 2013 6:56 pm
by Mario_r4
punk_joker wrote:Тоесть в каждой процедуре сделать вывод имени процедуры на доску отладки?
Да, именно так и приходится отлаживать при отсутствии других способов. Иногда это вообще единственный способ разобраться что происходит, например в ядре я иногда такое тоже использую.
Posted: Sat Sep 21, 2013 7:16 pm
by punk_joker
Я и сам так делаю. Проблемный участок локализирован, это строка где происходит попытка получения значения из ini-файла. И код этот раньше работал вроде как. Позже попробую определить после какой ревизии перестало работать.
Re: C--
Posted: Sun Oct 06, 2013 2:49 am
by punk_joker
Разбирался с чтением директории (на примере Eolite). Все вроде понятно. Только как определить, пустая директория или нет?
Re: C--
Posted: Sun Oct 06, 2013 8:13 am
by 0CodErr
punk_joker, ну всё правильно, с помощью SysFn70.1:
http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Fdocs%2Fsysfuncr.txt#line-3858 wrote:= Функция 70, подфункция 1 - чтение папки с поддержкой длинных имён. =
...................................................................
* ebx = указатель на информационную структуру
Формат информационной структуры:
...................................................................
* +16 = +0x10: dword: указатель на буфер, куда будут записаны
данные, размер буфера должен быть не меньше 32 + [+12]*560 байт
...................................................................
Структура буфера:
* +0: 32*byte: заголовок
...................................................................
Структура заголовка:
...................................................................
* +8: dword:
общее число файлов в папке
...................................................................
Re: C--
Posted: Sun Oct 06, 2013 10:42 am
by Mario_r4
punk_joker
Как правильно подсказывает 0CodErr - с помощью ф.70.1.
Добавлю лишь, что для минимизации действий системы и экономии памяти нужно указывать в запросе:
Code: Select all
+12 = +0xC: dword: сколько блоков читать
нулевое количество блоков для считывания. Тогда нужно только 32 байта на саму информационную структуру.