C--
-
Теоретически, libini я подключил правильно. Но при попытке чтения значения программа вылетает. В чем проблема не пойму.
- Attachments
-
-
tmpdisk.7z (31.78 KiB)Downloaded 168 times
-
to infinity and beyond
Те программы которые раньше работали с ini, написанные на C--, также перестали работать
to infinity and beyond
В LibINI что то фиксили и что то добавляли. Проверь предыдущие ревизии.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Спасибо. Кажется я понял возможную причину проблемы.
to infinity and beyond
Версия оказалась не верной. Надо дальше разбираться.
to infinity and beyond
Импорт библиотеки вроде как работает всетаки, покрайней мере программа не вылетает. Но при попытке получить значение ключа программа сразу же вылетает. Причины пока выяснить несмог
to infinity and beyond
Для библиотек mike.dld в load_dll2 третий параметр должен быть равен 1, для остальных библиотек 0. Этот параметр указывает нужна ли предварительная инициализация библиотеки.
Идиот я. Непосмотрел доску со стороны ядра. После вылета программы, на доске появляются следующие строчки
Пока что мне это ниочем не говорит. Потому надеюсь на вашу помощь.
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
to infinity and beyond
Предлагаю расставить маркеры - названия процедур выводимые на доску отладки, если в C-- нет способа получить адреса процедур после компиляции.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Тоесть в каждой процедуре сделать вывод имени процедуры на доску отладки?Mario_r4 wrote:Предлагаю расставить маркеры - названия процедур выводимые на доску отладки, если в C-- нет способа получить адреса процедур после компиляции.
to infinity and beyond
Да, именно так и приходится отлаживать при отсутствии других способов. Иногда это вообще единственный способ разобраться что происходит, например в ядре я иногда такое тоже использую.punk_joker wrote:Тоесть в каждой процедуре сделать вывод имени процедуры на доску отладки?
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Я и сам так делаю. Проблемный участок локализирован, это строка где происходит попытка получения значения из ini-файла. И код этот раньше работал вроде как. Позже попробую определить после какой ревизии перестало работать.
to infinity and beyond
Разбирался с чтением директории (на примере Eolite). Все вроде понятно. Только как определить, пустая директория или нет?
to infinity and beyond
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: общее число файлов в папке
...................................................................
punk_joker
Как правильно подсказывает 0CodErr - с помощью ф.70.1.
Добавлю лишь, что для минимизации действий системы и экономии памяти нужно указывать в запросе:
нулевое количество блоков для считывания. Тогда нужно только 32 байта на саму информационную структуру.
Как правильно подсказывает 0CodErr - с помощью ф.70.1.
Добавлю лишь, что для минимизации действий системы и экономии памяти нужно указывать в запросе:
Code: Select all
+12 = +0xC: dword: сколько блоков читать
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Who is online
Users browsing this forum: No registered users and 0 guests