Ru/api/kernel: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
(Добавлено упоминание подфункции 31 функции 68. Добавлено нормальное название страницы.)
 
(92 intermediate revisions by 9 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]]
 
Параметры:
  * eax = 1 - номер функции
  * ebx = x-координата (относительно окна)
  * ecx = y-координата (относительно окна)
  * edx = 0x00RRGGBB - цвет точки
    edx = 0x01xxxxxx - инвертировать цвет точки
          (младшие 24 бита игнорируются)
Возвращаемое значение:
  * функция не возвращает значения
 
== Функция 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/ru|Функция 16]]
 
== Функция 17 - получить код нажатой кнопки. ==
 
Описание функции перенесено в отдельную статью: [[SysFn17/ru|Функция 17]]
 
== Функция 18 == 
 
Описание функции перенесено в отдельную статью: [[SysFn18/ru|Функция 18]]
 
== Функция 20 - интерфейс MIDI. ==
 
Описание функции перенесено в отдельную статью: [[SysFn20/ru|Функция 20]]
 
== Функция 22 - установить системную дату/время. ==
 
Описание функции перенесено в отдельную статью: [[SysFn22/ru|Функция 22]]
 
== Функция 23 - ожидать события с таймаутом. ==
 
Если очередь сообщений пуста, ждёт появления сообщения в очереди,
но не более указанного времени. Затем считывает сообщение из очереди.


Параметры:
[[SysFn01/ru | Функция 1]] - поставить точку в окне.
  * eax = 23 - номер функции
  * ebx = таймаут (в сотых долях секунды)
Возвращаемое значение:
  * eax = 0 - очередь сообщений пуста
  * иначе eax = событие (смотри список событий)
Замечания:
  * Учитываются только те события, которые входят в маску,
    устанавливаемую функцией 40. По умолчанию это события
    перерисовки, нажатия на клавиши и на кнопки.
  * Для проверки, есть ли сообщение в очереди, используйте функцию 11.
    Чтобы ждать сколь угодно долго, используйте функцию 10.
  * Передача ebx=0 приводит к моментальному возвращению eax=0.
  * При текущей реализации произойдёт немедленный возврат из функции
    с eax=0, если сложение ebx с текущим значением счётчика времени
    вызовет 32-битное переполнение.


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


=== Подфункция 1 - начать проигрывать CD-audio. ===
[[SysFn03/ru | Функция 3]] - получить системное время.


Параметры:
[[SysFn04/ru | Функция 4]] - вывести строку текста в окно.
  * eax = 24 - номер функции
  * ebx = 1 - номер подфункции
  * ecx = 0x00FRSSMM, где
    * MM = начальная минута
    * SS = начальная секунда
    * FR = начальный фрейм
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = 1 - не определена база CD
Замечания:
  * Предварительно нужно определить базовый порт CD вызовом
    подфункции 3 функции 21.
  * В секунде 75 фреймов, в минуте 60 секунд.
  * Функция асинхронна (возвращает управление, когда началось
    проигрывание).


[[SysFn05/ru | Функция 5]] - пауза.


=== Подфункция 2 - получить информацию о дорожках. ===
[[SysFn07/ru | Функция 7]] - вывести изображение в окно.


Параметры:
[[SysFn08/ru | Функция 8]] - определить/удалить кнопку.
  * eax = 24 - номер функции
  * ebx = 2 - номер подфункции
  * ecx = указатель на буфер для таблицы
    (максимум 8*64h+4 байт=100 дорожек)
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = 1 - не определена база CD
Замечания:
  * Формат таблицы с информацией о дорожках такой же, как и для
    ATAPI-CD команды 43h (READ TOC), обычной таблицы (подкоманда 00h).
    Адреса возвращаются в формате MSF.
  * Предварительно нужно определить базовый порт CD вызовом
    подфункции 3 функции 21.
  * Функция возвращает информацию только о не более чем 100
    первых дорожках. В большинстве случаев этого достаточно.


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


=== Подфункция 3 - остановить проигрываемое CD-audio. ===
[[SysFn10/ru | Функция 10]] - ожидать события.


Параметры:
[[SysFn11/ru|Функция 11]] - проверить, есть ли событие, без ожидания.
  * eax = 24 - номер функции
  * ebx = 1 - номер подфункции
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = 1 - не определена база CD
Замечания:
  * Предварительно нужно определить базовый порт CD вызовом
    подфункции 3 функции 21.


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


=== Подфункция 4 - извлечь лоток привода диска. ===
[[SysFn13/ru|Функция 13]] - нарисовать прямоугольник в окне.


Параметры:
[[SysFn14/ru|Функция 14]] - получить размеры экрана.
  * eax = 24 - номер функции
  * ebx = 4 - номер подфункции
  * ecx = номер CD/DVD-диска
      (от 0=Primary Master до 3=Secondary Slave)
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Функция поддерживается только для ATAPI-устройств (CD и DVD).
  * При извлечении лотка производится разблокировка ручного управления
    механизмом лотка.
  * При извлечении лотка код производит очистку кэша соответствующего
<