Ru/api/kernel: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
(Добавлено упоминание подфункции 31 функции 68. Добавлено нормальное название страницы.)
 
(104 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. ==
=== Подфункция 1 - установить размер фонового изображения. ===
 
Параметры:
  * eax = 15 - номер функции
  * ebx = 1 - номер подфункции
  * ecx = ширина изображения
  * edx = высота изображения
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Вызов функции обязателен перед вызовом подфункций 2 и 5.
  * Для обновления экрана (после завершения серии команд, работающих с
    фоном) вызывайте подфункцию 3 перерисовки фона.
  * Есть парная функция получения размеров фонового изображения -
    подфункция 1 функции 39.
 
 
=== Подфункция 2 - поставить точку на фоновом изображении. ===
 
Параметры:
  * eax = 15 - номер функции
  * ebx = 2 - номер подфункции
  * ecx = смещение
  * edx = цвет точки 0xRRGGBB
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Смещение для точки с координатами (x,y) вычисляется как
    (x+y*xsize)*3.
  * Если указанное смещение превышает установленный подфункцией 1
    размер, вызов игнорируется.
  * Для обновления экрана (после завершения серии команд, работающих с
    фоном) вызывайте подфункцию 3 перерисовки фона.
  * Есть парная функция получения точки с фонового изображения -
    подфункция 2 функции 39.
 
 
=== Подфункция 3 - перерисовать фон. ===
 
Параметры:
  * eax = 15 - номер функции
  * ebx = 3 - номер подфункции
Возвращаемое значение:
  * функция не возвращает значения
 
 
=== Подфункция 4 - установить режим отрисовки фона. ===
 
Параметры:
  * eax = 15 - номер функции
  * ebx = 4 - номер подфункции
  * ecx = режим отрисовки:
    * 1 = замостить
    * 2 = растянуть
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Для обновления экрана (после завершения серии команд, работающих с
    фоном) вызывайте подфункцию 3 перерисовки фона.
  * Есть парная команда получения режима отрисовки фона -
    подфункция 4 функции 39.
 
 
=== Подфункция 5 - поместить блок пикселей на фон. ===
 
Параметры:
  * eax = 15 - номер функции
  * ebx = 5 - номер подфункции
  * ecx = указатель на данные в формате BBGGRRBBGGRR...
  * edx = смещение в данных фонового изображения
  * esi = размер данных в байтах = 3 * число пикселей
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Проверки корректности смещения и размера не производится.
  * Цвет каждого пикселя хранится как 3-байтная величина BBGGRR.
  * Пиксели фонового изображения записываются последовательно
    слева направо, сверху вниз.
  * Смещение пикселя с координатами (x,y) есть (x+y*xsize)*3.
  * Для обновления экрана (после завершения серии команд, работающих с
    фоном) вызывайте подфункцию 3 перерисовки фона.
 
 
=== Подфункция 6 - спроецировать данные фона на адресное пространство процесса.===
 
Параметры:
  * eax = 15 - номер функции
  * ebx = 6 - номер подфункции
Возвращаемое значение:
  * eax = указатель на данные фона, 0 при ошибке
Замечания:
  * Спроецированные данные доступны на чтение и запись.
  * Размер данных фона равен 3*xsize*ysize. Изменение размеров фона
    блокируется на время работы с спроецированными данными.
  * Цвет каждого пикселя хранится как 3-байтовая величина BBGGRR.
  * Пиксели фонового изображения записываются последовательно
    слева направо, сверху вниз.
 
 
=== Подфункция 7 - закрыть проекцию данных фона на адресное пространство процесса. ===
 
Параметры:
  * eax = 15 - номер функции
  * ebx = 7 - номер подфункции
  * ecx = указатель на данные фона
Возвращаемое значение:
  * eax = 1 при успехе, 0 при ошибке
 
 
== Функция 16 - сохранить рамдиск на дискету. ==
 
Параметры:
  * eax = 16 - номер функции
  * ebx = 1 или ebx = 2 - на какую дискету сохранять
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = 1 - ошибка
 
 
== Функция 17 - получить код нажатой кнопки. ==
 
Забирает код нажатой кнопки из буфера.
Параметры:
  * eax = 17 - номер функции
Возвращаемое значение:
  * если буфер пуст, возвращается eax=1
  * если буфер не пуст, тогда возвращается:  старшие 24 бита eax
    содержат идентификатор кнопки (в частности, в ah оказывается
    младший байт идентификатора; если все кнопки имеют идентификатор,
    меньший 256, то для различения достаточно ah),
    а в al возвращается 0 - если использовалась левая кнопка мыши, или бит той кнопки мыши, которая использовалась.
Замечания:
  * "Буфер" хранит только одну кнопку, при нажатии новой кнопки
    информация о старой теряется.
  * При вызове этой функции приложением с неактивным окном
    возвращается ответ "буфер пуст".
 
 
== Функция 18 ==
=== Подфункция 2 - завершить процесс/поток по слоту. ===
 
Параметры:
  * eax = 18 - номер функции