Помогите новичку

Applications development, KoOS API questions
  • А в [file_name] хранится указатель на начало строки с именем? Или это первый байт имени?
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Возвращаемое значение:
    * eax = указатель на загруженный файл или 0
    * edx = размер загруженного файла или 0
    Leency wrote:Код:
    mov eax, 68
    mov ebx, 27
    mov ecx, [file_name]
    int 0x40
    mov [fsize],ebx
  • Spoiler:Image
    Спасибо.
    Из хаоса в космос
  • Leency wrote:Кто-то может объяснить, что делает эта функция? Чем она отличается от "70.0 - чтение файла с поддержкой длинных имён"? Тем, что во время загрузки файла может его распаковать?
    Это костыль от Serge под загрузку PE из user-mode. При использовании он блокирует любые параллельные распаковки в ядре - в частности, блокирует запуск упакованных программ. Не нужно его использовать.
    Сделаем мир лучше!
  • >> в частности, блокирует запуск упакованных программ.
    Нужно пофиксить.

    На данный момент распаковка длится милисекунды. Сама идея функции очень хороша. Можно basekus.kla и *.3ds в дистре держать упакованными.
    Из хаоса в космос
  • Leency wrote:>> в частности, блокирует запуск упакованных программ.
    Нужно пофиксить.

    На данный момент распаковка длится милисекунды. Сама идея функции очень хороша. Можно basekus.kla и *.3ds в дистре держать упакованными.
    Нет. Нужно не пихать в ядро то, что можно сделать в библиотеке. И не использовать подобные функции, если их туда всё же запихнули. Файлы и так можно держать упакованными, код программ в любом случае потребуется менять.
    Сделаем мир лучше!
  • CleverMouse wrote:Это костыль от Serge под загрузку PE из user-mode. При использовании он блокирует любые параллельные распаковки в ядре - в частности, блокирует запуск упакованных программ. Не нужно его использовать.
    Это даже не серьёзно. Никаких параллельных распаковок в ядре нет, код распаковщика блокируется мьютексом. Продолжительность блокировки равна продолжительности распаковки. load_file_umode калька с load_file. С таким же основанием можно жаловаться на то, что запуск одной упакованной программы или драйвера или загрузка библиотеки блокирут запуск других упакованных программ драйверов и библиотек.
    CleverMouse wrote:Нет. Нужно не пихать в ядро то, что можно сделать в библиотеке. И не использовать подобные функции, если их туда всё же запихнули. Файлы и так можно держать упакованными, код программ в любом случае потребуется менять.
    Это не костыль под загрузку PE из user-mode. Функциональность - загрузка файлов с распаковкой есть в ядре уже 7 лет. Зачем от неё отказываться ? Если следовать этой логике, надо вернуться с самораспаковывающимся приложениям ?
  • Вот здесь http://websvn.kolibrios.org/filedetails ... c&peg=4181 есть такие строки:

    Code: Select all

            add     ax, 23  ; mouse cursor Y size
    ; ......................................
            add     ax, 15  ; mouse cursor X size
    Откуда эти значения?
  • Похоже на живущий в ...\svn\kolibri\kernel\trunk\gui\mousepointer.inc курсор размером 16х24 без единичек.
    Attachments
    mousepointer.gif
    mousepointer.gif (686 Bytes)
    Viewed 5055 times
  • Serge wrote:Цитата:
    Тогда остается предположение, что количество порожденных потоков на родительский поток величина конечная
    Таких ограничений нет.
    Я попробовал выводить на Board идентификаторы. Получаются разные значения.
    Spoiler:Image
    Spoiler:Image
    Такой был код:
    Spoiler:

    Code: Select all

    ORG 0
    BITS 32
    ; --------------------------- ;
    MENUET01       db 'MENUET01'
    version        dd 1
    program.start  dd START
    program.end    dd END
    program.memory dd END
    program.stack  dd END
    program.params dd 0
    program.path   dd 0
    ; --------------------------- ;
    START:
            mov    eax, 51
            mov    ebx, 1
            mov    ecx, THREAD
            xor    edx, edx
            int    64
            mov    edx, eax ; save in edx id
    ; --------------------------- ;
            mov    edi,  buffer
            mov    eax, "    "
            stosd
            stosd
            stosw
            xor    al, al
            stosb
            dec    edi
            dec    edi
            mov    ecx, 10
            mov    eax, edx ; edx = id
    .int2str:
            xor    edx, edx
            div    ecx
            add    edx, 48
            mov    [edi], dl
            dec    edi
            test   eax, eax
            jnz    .int2str
    ; debug.print.line:
            mov    eax, 63
            mov    ebx, 1
            xor    ecx, ecx
            mov    esi, buffer
    .next:
            mov    cl, [esi]
            jcxz   .done
            int    64
            inc    esi
            jmp    .next
    .done:
            mov    cl, 13
            int    64
            mov    cl, 10
            int    64
    ; --------------------------- ;
            jmp    START
    THREAD:
            or     eax, -1
            int    64
    ; --------------------------- ;
    buffer: resb 11
    END:
    
    Во всех случаях прекращает работать мышь, а клавиатура иногда остаётся работать.
    После вылета в окне CPU продолжается отрисовка, оставшиеся потоки так и не завершаются, cpu-usage у них 0.

    Вот здесь вывод Board при запуске прошлого примера отличается(здесь вылет в kernel, а не application):
    Spoiler:Image
  • Где в ядре находится цикл, который отправляет окнам событие 1?
  • Здравствуйте. Может кто-то расказать об рисовании GUI ?
    - Где почитать?
    - Как рисовать?
    - Стандарты, где почитать?
    - Система сигналов и обработчиков(или как гуи связать с кодом)
    Буду очень благодарен за помощь.
    ПС в гугле не забанили, но ничего толкового не нашел. а систему - не осилил.
  • Во-первых, посмотрите исходники уже готовых программ http://websvn.kolibrios.org/listing.php ... Kolibri+OS
    Во-вторых, на каком языке собираетесь писать?
  • Wildwest wrote:Во-первых, посмотрите исходники уже готовых программ http://websvn.kolibrios.org/listing.php ... Kolibri+OS
    Во-вторых, на каком языке собираетесь писать?
    писать собираюсь на плюсах. Хочу сделать маленькое подтверждение или опровержение своей идеи. Идея состоит в концептуальной возможности использования интерпретатора html-подобного языка для построения интерфейсов
    ПС. О qt слышал, это немного не то.
  • Who is online

    Users browsing this forum: No registered users and 32 guests