Ru/api/kernel: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
Line 211: Line 211:
[[SysFn72/ru|Функция 72]] - послать сообщение окну.
[[SysFn72/ru|Функция 72]] - послать сообщение окну.
* Подфункция 1 - послать сообщение с параметром активному окну.
* Подфункция 1 - послать сообщение с параметром активному окну.
[[SysFn73/ru|Функция 73]] - программный блиттер.


[[SysFn-1/ru|Функция -1]] - завершить выполнение потока/процесса
[[SysFn-1/ru|Функция -1]] - завершить выполнение потока/процесса

Revision as of 18:08, 4 September 2011

СИСТЕМНЫЕ ФУНКЦИИ KolibriOS 0.7.7.0

Номер функции помещается в регистр eax. Вызов системной функции осуществляется командой "int 0x40". Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.

Перечень функций

Функция 0 - определить и нарисовать окно.

Функция 1 - поставить точку в окне.

Функция 2 - получить код нажатой клавиши.

Функция 3 - получить системное время.

Функция 4 - вывести строку текста в окно.

Функция 5 - пауза.

Функция 6 - прочитать файл с рамдиска.

Функция 7 - вывести изображение в окно.

Функция 8 - определить/удалить кнопку.

Функция 9 - информация о потоке выполнения.

Функция 10 - ожидать события.

Функция 11 - проверить, есть ли событие, без ожидания.

Функция 12 - начать/закончить перерисовку окна.

Функция 13 - нарисовать прямоугольник в окне.

Функция 14 - получить размеры экрана.

Функция 15 - работа с фоновой графикой

Функция 16 - сохранить рамдиск на дискету.

Функция 17 - получить код нажатой кнопки.

Функция 18 - системные настройки и информация

Функция 20 - интерфейс MIDI.

Функция 21 - установка системных параметров

Функция 22 - установить системную дату/время.

Функция 23 - ожидать события с таймаутом.

Функция 24 - работа с проигрывателем компакт-дисков

Функция 25 - установить громкость SBPro. - Удалена

Функция 26 - аппаратный сервис

Функция 27 - сведения об этой функции отсутствуют

Функция 28 - установить громкость SB16. - Удалена

Функция 29 - получить системную дату.

Функция 30 - работа с текущей папкой.

Функция 31 - сведения об этой функции отсутствуют

Функция 32 - использовалась в ранних версиях КОС для удаления файла с рамдиска.- удалена

Функция 33 - использовалась в ранних версиях КОС для записи файла на рамдиск.-удалена

Функция 34 - сведения об этой функции отсутствуют

Функция 35 - прочитать цвет точки на экране.

Функция 36 - прочитать область экрана.

Функция 37 - работа с мышью.

Функция 38 - нарисовать отрезок.

Функция 39 - чтение фона.

Функция 40 - установить маску для ожидаемых событий.

Функция 41 - узнать владельца IRQ. - Удалена

Функция 42 - работа с данными, полученными по IRQ. - Удалена

Функция 43 - ввод/вывод в порт.

Функция 44 - определить действия при поступлении IRQ. - Удалена

Функция 45 - зарезервировать/освободить IRQ. - Удалена

Функция 46 - зарезервировать/освободить группу портов ввода/вывода.

  • Внимание: Эта функция устарела и может быть удалена в следующих версиях ядра.

Функция 47 - вывести число в окно.

Функция 48 - стили отображения окон

Функция 49 - Advanced Power Management (APM).

Функция 50 - установка формы окна.

Функция 51 - создать поток.

Функция 52 - сетевой сервис.

Функция 53 - работа с сетевым сокетами.

Функция 54 - Зарезервирована (возвращает 0x12345678 в eax).

Функция 55 - аудио сервис.

  • Подфункция 0 - загрузить данные для SB16.
  • Подфункция 1 - начать проигрывать данные на SB16.
  • Подфункция 2 - установить формат данных SB16.
  • Подфункция 55 - начать проигрывать данные на встроенном спикере.

Функция 56 - Зарезервирована.

Функция 57 - PCI BIOS.

Функция 58 - работа с файловой системой.

  • Подфункция 0 - прочитать файл/папку.
  • Подфункция 8 - LBA-чтение с устройства.
  • Подфункция 15 - получить информацию о файловой системе.

Функция 59 - Зарезервирована.

Функция 60 - Inter Process Communication (IPC).

  • Подфункция 1 - установить область для получения IPC

Функция 61 - получить параметры для прямого доступа к графике.

Функция 62 - пользовательский доступ к PCI.

  • Подфункция 0 - получить версию PCI-интерфейса.
  • Подфункция 1 - получить номер последней PCI-шины.
  • Подфункция 2 - Получить механизм обращения к конфигурационному пространству PCI.
  • подфункции 4,5,6 - прочитать PCI-регистр.
  • подфункции 8,9,10 - записать в PCI-регистр.
  • подфункция 11 - инициализировать доступ к MMIO
  • подфункция 12 - получить линейный адрес MMIO-блока
  • подфункция 13 - освободить линейные адреса MMIO

Функция 63 - работа с доской отладки.

Функция 64 - перераспределить память приложения.

Функция 65 - вывести изображение с палитрой в окно.

Функция 66 - работа с клавиатурой.

  • Подфункция 1 - установить режим ввода с клавиатуры.
  • Подфункция 2 - получить режим ввода с клавиатуры.
  • Подфункция 3 - получить состояние управляющих клавиш.
  • Подфункция 4 - установить общесистемную "горячую клавишу".
  • Подфункция 5 - удалить установленную "горячую клавишу".

Функция 67 - изменить положение/размеры окна.

Функция 68 - внутренние системные службы

  • Подфункция 0 - получить счётчик переключений задач.
  • Подфункция 1 - переключиться на следующий поток выполнения.
  • Подфункция 2 - кэш + rdpmc.
  • Подфункция 3 - прочитать MSR-регистр.
  • Подфункция 4 - записать в MSR-регистр.
  • Подфункция 11 - инициализировать кучу процесса.
  • Подфункция 12 - выделить блок памяти.
  • Подфункция 13 - освободить блок памяти.
  • Подфункция 14 - ожидать извещения от драйвера.
  • Подфункция 15 - установить обработчик исключений FPU.
  • Подфункция 16 - загрузить драйвер.
  • Подфункция 17 - управление драйвером.
  • Подфункция 18 - установить обработчик исключений SSE.
  • Подфункция 19 - загрузить DLL.
  • Подфункция 20 - перераспределить блок памяти.
  • Подфункция 22 - открыть именованую область памяти.
  • Подфункция 23 - закрыть именованую область памяти.

Функция 69 - отладка.

  • Подфункция 0 - определить область данных для отладочных сообщений.
  • Подфункция 1 - получить состояние регистров отлаживаемого потока.
  • Подфункция 2 - установить состояние регистров отлаживаемого потока.
  • Подфункция 3 - отключиться от отлаживаемого процесса.
  • Подфункция 4 - приостановить поток.
  • Подфункция 5 - возобновить выполнение потока.
  • Подфункция 6 - прочитать из памяти отлаживаемого процесса.
  • Подфункция 7 - записать в память отлаживаемого процесса.
  • Подфункция 8 - завершить отлаживаемый поток.
  • Подфункция 9 - установить/снять аппаратную точку останова.

Функция 70 - работа с файловой системой с поддержкой длинных имён.

  • Подфункция 0 - чтение файла с поддержкой длинных имён.
  • Подфункция 1 - чтение папки с поддержкой длинных имён.
  • Подфункция 2 - создание/перезапись файла с поддержкой длинных имён.
  • Подфункция 3 - запись в существующий файл с поддержкой длинных имён.
  • Подфункция 4 - установка размера файла.
  • Подфункция 5 - получение информации о файле/папке.
  • Подфункция 6 - установка атрибутов файла/папки.
  • Подфункция 7 - запуск программы.
  • Подфункция 8 - удаление файла/папки.
  • Подфункция 9 - создание папки.

Описание функции перенесено в отдельную статью: Функция 71 - параметры окна

  • Подфункция 1 - установить заголовок окна программы.

Функция 72 - послать сообщение окну.

  • Подфункция 1 - послать сообщение с параметром активному окну.

Функция 73 - программный блиттер.

Функция -1 - завершить выполнение потока/процесса

Список событий

Очередное событие можно получить вызовом одной из функций 10 (ожидать события), 11 (проверить без ожидания), 23 (ожидать в течение заданного времени). Эти функции возвращают только те события, которые входят в маску, устанавливаемую функцией 40. По умолчанию это первые три, чего вполне достаточно для многих приложений. Коды событий:

  • 1 = сообщение о перерисовке (сбрасывается при вызове функции 0)
  • 2 = нажата клавиша на клавиатуре (поступает, только когда окно активно) или нажата "горячая клавиша";
    • сбрасывается, когда все клавиши из буфера считаны функцией 2
  • 3 = нажата кнопка, определённая ранее функцией 8 (или кнопка закрытия, созданная неявно функцией 0; кнопка минимизации обрабатывается системой и о ней сообщения не приходит;
    • поступает, только когда окно активно;
    • сбрасывается, когда все кнопки из буфера считаны функцией 17)
  • 4 = зарезервировано (в текущей реализации никогда не приходит даже при размаскировке функцией 40)
  • 5 = перерисовывается фон рабочего стола (сбрасывается автоматически после перерисовки, так что если во время перерисовки фона программа не ждёт и не проверяет события, то этого события она не заметит)
  • 6 = событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
  • 7 = произошло событие IPC (смотри функцию 60 - Inter Process Communication; сбрасывается при прочтении)
  • 8 = произошло сетевое событие (сбрасывается при прочтении; смотри работу с сетью)
  • 9 = произошло отладочное событие (сбрасывается при прочтении; смотри отладочную подсистему)
  • 16..31 - ранее использовались для проверки соответвующих IRQ (16=IRQ0, 31=IRQ15) (на новых версиях ядра не генерируются)

Коды ошибок файловой системы

  • 0 = успешно
  • 1 = не определена база и/или раздел жёсткого диска (подфункциями 7, 8 функции 21)
  • 2 = функция не поддерживается для данной файловой системы
  • 3 = неизвестная файловая система
  • 4 = зарезервировано, никогда не возвращается в текущей реализации
  • 5 = файл не найден
  • 6 = файл закончился
  • 7 = указатель вне памяти приложения
  • 8 = диск заполнен
  • 9 = таблица FAT разрушена
  • 10 = доступ запрещён
  • 11 = ошибка устройства

При запуске программы возможны также следующие коды ошибок:

  • 30 = 0x1E = недостаточно памяти
  • 31 = 0x1F = файл не является исполнимым
  • 32 = 0x20 = слишком много процессов