Ru/api/kernel: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
(Функция 10 - перенесена)
(Добавлено упоминание подфункции 31 функции 68. Добавлено нормальное название страницы.)
 
(108 intermediate revisions by 11 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 - проверить, есть ли событие, без ожидания. ==
 
Если в очереди сообщений есть какое-то событие, то считывает и
возвращает его. Если очередь пуста, возвращает нуль.
Параметры:
  * eax = 11 - номер функции
Возвращаемое значение:
  * eax = 0 - очередь сообщений пуста
  * иначе eax = событие (смотри список событий)
Замечания:
  * Учитываются только те события, которые входят в маску,
    устанавливаемую функцией 40. По умолчанию это события
    перерисовки, нажатия на клавиши и на кнопки.
  * Для ожидания появления события в очереди, используйте функцию 10.
    Чтобы ждать не более определенного времени, используйте
    функцию 23.
 
 
== Функция 12 - начать/закончить перерисовку окна. ==
 
=== Подфункция 1 - начать перерисовку окна. ===
Параметры:
  * eax = 12 - номер функции
  * ebx = 1 - номер подфункции
Возвращаемое значение:
  * функция не возвращает значения
 
=== Подфункция 2 - закончить перерисовку окна. ===
Параметры:
  * eax = 12 - номер функции
  * ebx = 2 - номер подфункции
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Функция начала перерисовки удаляет все определённые
    функцией 8 кнопки, их следует определить повторно.
 
 
== Функция 13 - нарисовать прямоугольник в окне. ==
 
Параметры:
  * eax = 13 - номер функции
  * ebx = [координата по оси x]*65536 + [размер по оси x]
  * ecx = [координата по оси y]*65536 + [размер по оси y]
  * edx = цвет 0xRRGGBB или 0x80RRGGBB для градиентной заливки
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Под координатами понимаются координаты левого верхнего угла
    прямоугольника относительно окна.
 
 
== Функция 14 - получить размеры экрана. ==
 
Параметры:
  * eax = 14 - номер функции
Возвращаемое значение:
  * eax = [xsize]*65536 + [ysize], где
  * xsize = x-координата правого нижнего угла экрана =
            размер по горизонтали - 1
  * ysize = y-координата правого нижнего угла экрана =
            размер по вертикали - 1
Замечания:
  * Смотри также подфункцию 5 функции 48 - получить размеры рабочей
    области экрана.
 
 
== Функция 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.
  * Пиксели фонового изображения записываются последовательно
    слева направо, сверху вниз.<