Ru/api/kernel: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
(Добавлено упоминание подфункции 31 функции 68. Добавлено нормальное название страницы.)
 
(98 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|Функция 17]]
 
== Функция 18 ==
=== Подфункция 2 - завершить процесс/поток по слоту. ===
 
Параметры:
  * eax = 18 - номер функции
  * ebx = 2 - номер подфункции
  * ecx = номер слота процесса/потока
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Нельзя завершить поток операционной системы OS/IDLE (номер слота
    1), можно завершить любой обычный поток/процесс.
  * Смотри также подфункцию 18 - завершение
    процесса/потока с заданным идентификатором.
 
 
=== Подфункция 3 - сделать активным окно заданного потока. ===
 
Параметры:
  * eax = 18 - номер функции
  * ebx = 3 - номер подфункции
  * ecx = номер слота потока
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * При указании корректного, но несуществующего слота активизируется
    какое-то окно.
  * Узнать, какое окно является активным, можно вызовом подфункции 7.
 
 
=== Подфункция 4 - получить счётчик пустых тактов в секунду. ===
 
Под пустыми тактами понимается время, в которое процессор простаивает
в ожидании прерывания (в инструкции hlt).
 
Параметры:
  * eax = 18 - номер функции
  * ebx = 4 - номер подфункции
Возвращаемое значение:
  * eax = значение счётчика пустых тактов в секунду
 
 
=== Подфункция 5 - получить тактовую частоту. ===
 
Параметры:
  * eax = 18 - номер функции
  * ebx = 5 - номер подфункции
Возвращаемое значение:
  * eax = тактовая частота (по модулю 2^32 тактов = 4ГГц)
 
 
=== Подфункция 6 - сохранить рамдиск в файл на жёстком диске. ===
 
Параметры:
  * eax = 18 - номер функции
  * ebx = 6 - номер подфункции
  * ecx = указатель на строку с полным именем файла
    (например, "/hd0/1/kolibri/kolibri.img")
Возвращаемое значение:
  * eax = 0 - успешно
  * иначе eax = код ошибки файловой системы
Замечания:
  * Все папки в указанном пути должны существовать, иначе вернётся
    значение 5, "файл не найден".
 
 
=== Подфункция 7 - получить номер активного окна. ===
 
Параметры:
  * eax = 18 - номер функции
  * ebx = 7 - номер подфункции
Возвращаемое значение:
  * eax = номер активного окна (номер слота потока, окно которого
    активно)
Замечания:
  * Активное окно находится вверху оконного стэка и получает
    сообщения обо всём вводе с клавиатуры.
  * Сделать окно активным можно вызовом подфункции 3.
 
 
=== Подфункция 8 - отключить/разрешить звук спикера. ===
 
При отключённом звуке вызовы подфункции 55 функции 55 игнорируются.
При включённом - направляются на встроенный спикер.
 
=== Подподфункция 1 - получить состояние. ===
Параметры:
  * eax = 18 - номер функции
  * ebx = 8 - номер подфункции
  * ecx = 1 - номер подподфункции
Возвращаемое значение:
  * eax = 0 - звук спикера разрешён; 1 - запрещён
 
=== Подподфункция 2 - переключить состояние. ===
Переключает состояния разрешения/запрещения.
Параметры:
  * eax = 18 - номер функции
  * ebx = 8 - номер подфункции
  * ecx = 2 - номер подподфункции
Возвращаемое значение:
  * функция не возвращает значения
 
 
=== Подфункция 9 - завершение работы системы  ===
 
Параметры:
  * eax = 18 - номер функции
  * ebx = 9 - номер подфункции
  * ecx = параметр:
    * 2 = выключить компьютер
    * 3 = перезагрузить компьютер
    * 4 = перезапустить ядро из файла kernel.mnt на рамдиске
Возвращаемое значение:
  * при неверном ecx регистры не меняются (т.е. eax=18)
  * при правильном вызове всегда возвращается признак успеха eax=0
Замечания:
  * Не следует полагаться на возвращаемое значение при неверном
    вызове, оно может измениться в последующих версиях ядра.
  * Можно использовать подфункцию 1, чтобы на последнем шаге
    завершения работы пользователь сам решал, что ему нужно.
 
=== Подфункция 10 - свернуть окно приложения. ===
 
Сворачивает собственное окно.
Параметры:
  * eax = 18 - номер функции
  * ebx = 10 - номер подфункции
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Минимизированное окно с точки зрения функции 9 сохраняет положение
    и размеры.
  * Восстановление окна приложения происходит при активизировании
    подфункцией 3.
  * Обычно нет необходимости явно сворачивать/разв