Ru/api/kernel: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
(Добавлено упоминание подфункции 31 функции 68. Добавлено нормальное название страницы.)
 
(96 intermediate revisions by 10 users not shown)
Line 1: Line 1:
= СИСТЕМНЫЕ ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ Kolibri 0.7.1.0 =
{{DISPLAYTITLE:API ядра}}
 
''' СИСТЕМНЫЕ ФУНКЦИИ KolibriOS'''


Номер функции помещается в регистр eax.
Номер функции помещается в регистр eax.
Line 5: Line 7:
Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.
Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.


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


== Функция 0 - определить и нарисовать окно. ==
[[SysFn00/ru | Функция 0]] - определить и нарисовать окно.
 
Определяет окно приложения. Рисует рамку окна, заголовок и рабочую
область. Для окон со скином определяет стандартные кнопки закрытия и
минимизации.
 
Описание функции перенесено в отдельную статью: [[SysFn00 | Функция 0]]
 
== Функция 1 - поставить точку в окне. ==
 
Описание функции перенесено в отдельную статью: [[SysFn01 | Функция 1]]
 
== Функция 2 - получить код нажатой клавиши. ==
 
Извлекает из буфера код нажатой клавиши.
 
Описание функции перенесено в отдельную статью: [[SysFn02 | Функция 2]]
 
== Функция 3 - получить системное время. ==
 
Описание функции перенесено в отдельную статью: [[SysFn03 | Функция 3]]
 
== Функция 4 - вывести строку текста в окно. ==
 
Описание функции перенесено в отдельную статью: [[SysFn04 | Функция 4]]
 
== Функция 5 - пауза. ==
 
Задерживает выполнение программы на заданное время.
 
Описание функции перенесено в отдельную статью: [[SysFn05 | Функция 5]]
 
== Функция 6 - прочитать файл с рамдиска. ==
 
Описание функции перенесено в отдельную статью: [[SysFn06 | Функция 6]]
 
== Функция 7 - вывести изображение в окно. ==
 
Описание функции перенесено в отдельную статью: [[SysFn07 | Функция 7]]
 
== Функция 8 - определить/удалить кнопку. ==
 
Описание функции перенесено в отдельную статью: [[SysFn08 | Функция 8]]
 
== Функция 9 - информация о потоке выполнения. ==
 
Описание функции перенесено в отдельную статью: [[SysFn09 | Функция 9]]
 
== Функция 10 - ожидать события. ==
 
Если очередь сообщений пуста, то ждет появления сообщения в очереди. В таком состоянии поток не получает процессорного времени. Затем считывает сообщение из очереди.
 
Описание функции перенесено в отдельную статью: [[SysFn10 | Функция 10]]
 
== Функция 11 - проверить, есть ли событие, без ожидания. ==
 
Если в очереди сообщений есть какое-то событие, то считывает и
возвращает его. Если очередь пуста, возвращает нуль.
 
Описание функции перенесено в отдельную статью:  [[SysFn11|Функция 11]]
 
== Функция 12 - начать/закончить перерисовку окна. ==
 
Подфункция 1 - начать перерисовку окна.
Подфункция 2 - закончить перерисовку окна.
 
Перенесены в отдельную статью: [[SysFn12|Функция 12]]
 
== Функция 13 - нарисовать прямоугольник в окне. ==
 
Функция перенесена в статью [[SysFn13|Функция 13]]
 
== Функция 14 - получить размеры экрана. ==
 
Описание функции перенесено в отдельную статью: [[SysFn14|Функция 14]]
 
== Функция 15. ==
 
Описание функции перенесено в отдельную статью: [[SysFn15/ru | Функция 15]]
 
== Функция 16 - сохранить рамдиск на дискету. ==
 
 
Описание функции перенесено в отдельную статью: [[SysFn16|Функция 16]]
 
== Функция 17 - получить код нажатой кнопки. ==
 
Описание функции перенесено в отдельную статью: [[SysFn17/ru|Функция 17]]
 
== Функция 18 == 
 
Описание функции перенесено в отдельную статью: [[SysFn18/ru|Функция 18]]
 
== Функция 20 - интерфейс MIDI. ==


[[SysFn01/ru | Функция 1]] - поставить точку в окне.


=== Подфункция 1 - сброс ===
[[SysFn02/ru | Функция 2]] - получить код нажатой клавиши.
Параметры:
  * eax = 20 - номер функции
  * ebx = 1 - номер подфункции


=== Подфункция 2 - вывести байт ===
[[SysFn03/ru | Функция 3]] - получить системное время.
Параметры:
  * eax = 20 - номер функции
  * ebx = 2 - номер подфункции
  * cl = байт для вывода
Возвращаемое значение (одинаково для обеих подфункций):
  * eax = 0 - успешно
  * eax = 1 - не определён базовый порт
Замечания:
  * Предварительно должен быть определён базовый порт вызовом
    подфункции 1 функции 21.


[[SysFn04/ru | Функция 4]] - вывести строку текста в окно.


=== Подфункция 1 - установить базовый порт MPU MIDI. ===
[[SysFn05/ru | Функция 5]] - пауза.


Параметры:
[[SysFn07/ru | Функция 7]] - вывести изображение в окно.
  * eax = 21 - номер функции
  * ebx = 1 - номер подфункции
  * ecx = номер базового порта
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = -1 - ошибочный номер порта
Замечания:
  * Номер порта должен удовлетворять условиям 0x100<=ecx<=0xFFFF.
  * Установка базы нужна для работы функции 20.
  * Получить установленный базовый порт можно вызовом
    подфункции 1 функции 26.


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


=== Подфункция 2 - установить раскладку клавиатуры. ===
[[SysFn09/ru | Функция 9]] - информация о потоке выполнения.


Раскладка клавиатуры используется для преобразования сканкодов,
[[SysFn10/ru | Функция 10]] - ожидать события.
поступающих от клавиатуры, в ASCII-коды, считываемые функцией 2.
Параметры:
  * eax = 21 - номер функции
  * ebx = 2 - номер подфункции
  * ecx = какую раскладку устанавливать:
    * 1 = нормальную
    * 2 = раскладку при нажатом Shift
    * 3 = раскладку при нажатом Alt
  * edx = указатель на раскладку - таблицу длиной 128 байт
Или:
  * ecx = 9
  * dx = идентификатор страны (1=eng, 2=fi, 3=ger, 4=rus)
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = 1 - параметр задан неверно
Замечания:
  * Если нажат Alt, то используется раскладка с Alt;
    если не нажат Alt, но нажат Shift, то
    используется раскладка с Shift;
    если не нажаты Alt и Shift, но нажат Ctrl, то используется
    нормальная раскладка, после чего из кода вычитается 0x60;
    если не нажата ни одна из управляющих клавиш, то используется
    нормальная раскладка.
  * Получить раскладки и идентификатор страны можно с помощью
    подфункции 2 функции 26.
  * Идентификатор страны - глобальная системная переменная, которая
    самим ядром не используется; однако приложение @panel отображает
    соответствующую текущей стране иконку.
  * Приложение @panel переключает раскладки по запросу пользователя.


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


=== Подфункция 3 - установить базу CD. ===
[[SysFn12/ru|Функция 12]] - начать/закончить перерисовку окна.
* Подфункция 1 - начать перерисовку окна.
* Подфункция 2 - закончить перерисовку окна.


Параметры:
[[SysFn13/ru|Функция 13]] - нарисовать прямоугольник в окне.
  * eax = 21 - номер функции
  * ebx = 3 - номер подфункции
  * ecx = база CD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3
Возвращаемое значение:
  * eax = 0
Замечания:
  * База CD используется функцией 24.
  * Получить установленную базу CD можно вызовом
    подфункции 3 функции 26.


[[SysFn14/ru|Функция 14]] - получить размеры экрана.


=== Подфункция 4 - установить базовый порт Sound Blaster. ===
[[SysFn15/ru | Функция 15]] - работа с фоновой графикой
* Подфункция 1 - установить размер фонового изображения.
* Подфункция 2 - поставить точку на фоновом изображении.
* Подфункция 3 - перерисовать фон.
* Подфункция 4 - установить режим отрисовки фона.
* Подфункция 5 - поместить блок пикселей на фон.
* Подфункция 6 - спроецировать данные фона на адресное пространство процесса.
* Подфункция 7 - закрыть проекцию данных фона на адресное пространство процесса.
* Подфункция 8 - получить координаты последней отрисовки фона.
* Подфункция 9 - перерисовать прямоугольную часть фона.


Удалена
[[SysFn16/ru|Функция 16]] - сохранить рамдиск на дискету.


[[SysFn17/ru|Функция 17]] - получить код нажатой кнопки.


=== Подфункция 5 - установить язык системы. ===
[[SysFn18/ru|Функция 18]] - системные настройки и информация
* Подфункция 1 - сделать неактивным окно потока
* Подфункция 2 - завершить процесс/поток по слоту.
* Подфункция 3 - сделать активным окно заданного потока.
* Подфункция 4 - получить счётчик пустых тактов в секунду.
* Подфункция 5 - получить тактовую частоту.