Ru/api/kernel and FAQ: Difference between pages

From KolibriOS wiki
(Difference between pages)
Jump to navigation Jump to search
 
 
Line 1: Line 1:
''' СИСТЕМНЫЕ ФУНКЦИИ KolibriOS'''
''Frequently Asked Questions''


Номер функции помещается в регистр eax.
----
Вызов системной функции осуществляется командой "int 0x40".
Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.


== Перечень функций ==
====Where is the source code? / How do I work with KolibriOS's SVN server?====
[[Get source code]]<br>
[[How_to_use_the_KolibriOS_Team_SVN_server/ru|Russian version of page]]


[[SysFn00/ru | Функция 0]] - определить и нарисовать окно.
====Is support for NTFS writing planned?====
A member who goes by the handle Pathoswithin is working on it, see the related forum topic [http://board.kolibrios.org/viewtopic.php?f=31&t=659 here]


[[SysFn01/ru | Функция 1]] - поставить точку в окне.
====How do I create a bootable CD from the floppy image?====
#In nero, create a new '''BOOTABLE''' cd.
#In the BOOT options tab, select 'floppy emulation' and select 'image'.
#Set the path of the floppy image.
#Create the project, you may also add other data to the disk. (games as doom, quake,..)
#Burn it.


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


[[SysFn03/ru | Функция 3]] - получить системное время.
# [[DualBoot Kolibrios with Windows NT/2K/XP]]
# [[Booting from GRUB]]
# [[Booting from USB flash]]
# [[Booting from PXE]]


[[SysFn04/ru | Функция 4]] - вывести строку текста в окно.
====What hardware is supported?====
[[Hardware_Support|Supported Hardware]]


[[SysFn05/ru | Функция 5]] - пауза.
====Where is all the documentation?====
You can find the latest API documention in /kernel/docs/ in the Git repository ([https://git.kolibrios.org/KolibriOS/kolibrios/src/branch/main/kernel/trunk/docs Gitea])


[[SysFn06/ru | Функция 6]] - прочитать файл с рамдиска.
===What filesystems are supported?===
* FAT12 - read/write (floppy only)
* FAT32 - read/write
* NTFS - read only, no encryption
* EXT2/3 - read/write (write support experimental, use with caution!)
* XFS - read only
* CDFS - read only (cd-rom only)


[[SysFn07/ru | Функция 7]] - вывести изображение в окно.
===What is kolibri.img?===
* Kolibri.img is essentialy an image of a 3,5" floppy diskette. It contains most programs, libraries, drivers and the kolibri kernel.
* You write this image to a floppy, or boot the image from harddisk, cd-rom or USB device.
* Editing the image can be done under windows through winimage, or in linux using dd or mount commands.


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


[[SysFn09/ru | Функция 9]] - информация о потоке выполнения.
[[Category:Manuals]]
 
[[SysFn10/ru | Функция 10]] - ожидать события.
 
[[SysFn11/ru|Функция 11]] - проверить, есть ли событие, без ожидания.
 
[[SysFn12/ru|Функция 12]] - начать/закончить перерисовку окна.
 
[[SysFn13/ru|Функция 13]] - нарисовать прямоугольник в окне.
 
[[SysFn14/ru|Функция 14]] - получить размеры экрана.
 
[[SysFn15/ru | Функция 15]] - работа с фоновой графикой
 
[[SysFn16/ru|Функция 16]] - сохранить рамдиск на дискету.
 
[[SysFn17/ru|Функция 17]] - получить код нажатой кнопки.
 
[[SysFn18/ru|Функция 18]] - системные настройки и информация
* Подфункция 1 - сделать неактивным окно потока
* Подфункция 2 - завершить процесс/поток по слоту.
* Подфункция 3 - сделать активным окно заданного потока.
* Подфункция 4 - получить счётчик пустых тактов в секунду.
* Подфункция 5 - получить тактовую частоту.
* Подфункция 6 - сохранить рамдиск в файл на жёстком диске.
* Подфункция 7 - получить номер активного окна.
* Подфункция 8 - отключить/разрешить звук спикера.
* Подфункция 9 - завершение работы системы с параметром.
* Подфункция 10 - свернуть окно приложения.
* Подфункция 11 - получить информацию о дисковой подсистеме.
* Подфункция 13 - получить версию ядра.
* Подфункция 14 - ожидать начала обратного хода луча развёртки монитора.
* Подфункция 15 - поместить курсор мыши в центр экрана.
* Подфункция 16 - Получить размер свободной оперативной памяти.
* Подфункция 17 - получить размер имеющейся оперативной памяти.
* Подфункция 18 - завершить процесс/поток по идентификатору.
* Подфункция 19 - получить/установить настройки мыши.
* Подфункция 20 - получить информацию об оперативной памяти.
* Подфункция 21 - получить номер слота процесса/потока по идентификатору.
* Подфункция 22 - операции с окном другого процесса/потока.
* Подфункция 23 - минимизировать все окна.
* Подфункция 24 - установить пределы отрисовки.
* Подфункция 25 - управление положением окна относительно других окон.
 
[[SysFn20/ru|Функция 20]] - интерфейс MIDI.
 
[[SysFn21/ru|Функция 21]] - установка системных параметров
 
[[SysFn22/ru|Функция 22]] - установить системную дату/время.
 
[[SysFn23/ru|Функция 23]] - ожидать события с таймаутом.
 
[[SysFn24/ru|Функция 24]] - работа с проигрывателем компакт-дисков.
 
[[SysFn25/ru|Функция 25]] - записать область на слой фона.
 
[[SysFn26/ru|Функция 26]] - аппаратный сервис.
 
[[SysFn29/ru|Функция 29]] - получить системную дату.
 
[[SysFn30/ru|Функция 30]] - работа с текущей папкой.
 
[[SysFn34/ru|Функция 34]] - узнать кому принадлежит точка экрана.
 
[[SysFn35/ru|Функция 35]] - прочитать цвет точки на экране.
 
[[SysFn36/ru|Функция 36]] - прочитать область экрана.
 
[[SysFn37/ru|Функция 37]] - работа с мышью.
 
[[SysFn38/ru|Функция 38]] - нарисовать отрезок.
 
[[SysFn39/ru|Функция 39]] - чтение фона.
 
[[SysFn40/ru|Функция 40]] - установить маску для ожидаемых событий.
 
[[SysFn43/ru|Функция 43]] - ввод/вывод в порт.
 
[[SysFn46/ru|Функция 46]] - зарезервировать/освободить группу портов ввода/вывода.
 
[[SysFn47/ru|Функция 47]] - вывести число в окно.
 
[[SysFn48/ru|Функция 48]] - стили отображения окон
 
[[SysFn49/ru|Функция 49]] - Advanced Power Management (APM).
 
[[SysFn50/ru|Функция 50]] - установка формы окна.
 
[[SysFn51/ru|Функция 51]] - создать поток.
 
[[SysFn54/ru|Функция 54]] - работа с буфером обмена
* Подфункция 0 - узнать количество слотов в буфере обмена.
* Подфункция 1 - считать данные из буфера обмена.
* Подфункция 2 - записать данные в буфер обмена.
* Подфункция 3 - удалить последний слот с данными в буфере обмена
* Подфункция 4 - аварийный сброс блокировки буфера
 
[[SysFn55/ru | Функция 55]] - аудио сервис.
* Подфункция 55 - начать проигрывать данные на встроенном спикере.
 
Функция 56 - Зарезервирована.
 
[[SysFn57/ru | Функция 57]] - PCI BIOS.
 
[[SysFn58/ru | Функция 58]] - работа с файловой системой.
* Подфункция 0 - прочитать файл/папку.
* Подфункция 8 - LBA-чтение с устройства.
* Подфункция 15 - получить информацию о файловой системе.
 
Функция 59 - Зарезервирована.
 
[[SysFn60/ru | Функция 60]] - Inter Process Communication (IPC).
* Подфункция 1 - установить область для получения IPC
 
[[SysFn61/ru | Функция 61]] - получить параметры для прямого доступа к графике.
 
[[SysFn62/ru|Функция 62]] - пользовательский доступ к PCI.
* Подфункция 0 - получить версию PCI-интерфейса.
* Подфункция 1 - получить номер последней PCI-шины.
* Подфункция 2 - Получить механизм обращения к конфигурационному пространству PCI.
* подфункции 4,5,6 - прочитать PCI-регистр.
* подфункции 8,9,10 - записать в PCI-регистр.
* подфункция 11 - инициализировать доступ к MMIO
* подфункция 12 - получить линейный адрес MMIO-блока
* подфункция 13 - освободить линейные адреса MMIO
 
[[SysFn63/ru|Функция 63]] - работа с доской отладки.
 
[[SysFn64/ru|Функция 64]] - перераспределить память приложения.
 
[[SysFn65/ru|Функция 65]] - вывести изображение с палитрой в окно.
 
[[SysFn66/ru|Функция 66]] - работа с клавиатурой.
* Подфункция 1 - установить режим ввода с клавиатуры.
* Подфункция 2 - получить режим ввода с клавиатуры.
* Подфункция 3 - получить состояние управляющих клавиш.
* Подфункция 4 - установить общесистемную "горячую клавишу".
* Подфункция 5 - удалить установленную "горячую клавишу".
* Подфункция 6 - заблокировать обычный ввод.
* Подфункция 7 - разблокировать обычный ввод.
 
[[SysFn67/ru|Функция 67]] - изменить положение/размеры окна.
 
[[SysFn68/ru|Функция 68]] - внутренние системные службы.
* Подфункция 0 - получить счётчик переключений задач.
* Подфункция 1 - переключиться на следующий поток выполнения.
* Подфункция 2 - кэш + rdpmc.
* Подфункция 3 - прочитать MSR-регистр.
* Подфункция 4 - записать в MSR-регистр.
* Подфункция 11 - инициализировать кучу процесса.
* Подфункция 12 - выделить блок памяти.
* Подфункция 13 - освободить блок памяти.
* Подфункция 14 - ожидать извещения от драйвера.
* Подфункция 15 - установить обработчик исключений FPU.
* Подфункция 16 - загрузить драйвер.
* Подфункция 17 - управление драйвером.
* Подфункция 18 - установить обработчик исключений SSE.
* Подфункция 19 - загрузить DLL.
* Подфункция 20 - перераспределить блок памяти.
* Подфункция 22 - открыть именованую область памяти.
* Подфункция 23 - закрыть именованую область памяти.
* Подфункция 24 - установить обработчик исключений
* Подфункция 25 - изменить состояние активности сигнала
* Подфункция 26 - освободить страницы памяти
* Подфункция 27 - загузить файл
 
[[SysFn69/ru|Функция 69]] - отладка.
*Подфункция 0 - определить область данных для отладочных сообщений.
*Подфункция 1 - получить состояние регистров отлаживаемого потока.
*Подфункция 2 - установить состояние регистров отлаживаемого потока.
*Подфункция 3 - отключиться от отлаживаемого процесса.
*Подфункция 4 - приостановить поток.
*Подфункция 5 - возобновить выполнение потока.
*Подфункция 6 - прочитать из памяти отлаживаемого процесса.
*Подфункция 7 - записать в память отлаживаемого процесса.
*Подфункция 8 - завершить отлаживаемый поток.
*Подфункция 9 - установить/снять аппаратную точку останова.
 
[[SysFn70/ru|Функция 70]] - работа с файловой системой с поддержкой длинных имён.
* Подфункция 0 - чтение файла с поддержкой длинных имён.
* Подфункция 1 - чтение папки с поддержкой длинных имён.
* Подфункция 2 - создание/перезапись файла с поддержкой длинных имён.
* Подфункция 3 - запись в существующий файл с поддержкой длинных имён.
* Подфункция 4 - установка размера файла.
* Подфункция 5 - получение информации о файле/папке.
* Подфункция 6 - установка атрибутов файла/папки.
* Подфункция 7 - запуск программы.
* Подфункция 8 - удаление файла/папки.
* Подфункция 9 - создание папки.
 
[[SysFn71/ru|Функция 71]] - параметры окна.
* Подфункция 1 - установить заголовок окна программы.
 
[[SysFn72/ru|Функция 72]] - послать сообщение окну.
* Подфункция 1 - послать сообщение с параметром активному окну.
 
[[SysFn73/ru|Функция 73]] - программный блиттер.
 
[[SysFn74/ru|Функция 74]]
* Подфункция -1 - получить количество активных сетевых устройств.
* Подфункция 0 - получить тип сетевого устройства.
* Подфункция 1 - получить имя сетевого устройства.
* Подфункция 2 - сброс сетевого устройства.
* Подфункция 3 - остановить сетевое устройство.
 
[[SysFn75/ru|Функция 75]] - работа с сетевым сокетами.
* Подфункция 0 - Open socket (Открыть сокет).
* Подфункция 1 - Close socket (Закрыть сокет).
* Подфункция 2 - Bind (Привязка).
* Подфункция 3 - Listen (Слушать).
* Подфункция 4 - Connect (Соединение).
* Подфункция 5 - Accept (Соглашение).
* Подфункция 6 - Send (Послать).
* Подфункция 7 - Receive (Получить).
* Подфункция 8 - Set socket options (Задать опции сокета)
* Подфункция 9 - Get socket options (Получить опции сокета)
* Подфункция 10 - Get socketpair (Получить парный сокет).
 
[[SysFn76/ru|Функция 76]] - сетевые опции и статистика.
 
[[SysFn-1/ru|Функция -1]] - завершить выполнение потока/процесса.
 
== Список событий ==
 
Очередное событие можно получить вызовом одной из [[SysFn10/ru|функций 10]]
(ожидать события), [[SysFn11/ru|11]] (проверить без ожидания), [[SysFn23/ru|23]]
(ожидать в течение заданного времени).
Эти функции возвращают только те события, которые входят в маску,
устанавливаемую [[SysFn40/ru|функцией 40]]. По умолчанию это первые три, чего
вполне достаточно для многих приложений.
''Коды событий:''
* 1 = сообщение о перерисовке (сбрасывается при вызове [[SysFn00/ru|функции 0]])
* 2 = нажата клавиша на клавиатуре (поступает, только когда окно активно) или нажата "горячая клавиша";
** сбрасывается, когда все клавиши из буфера считаны [[SysFn02/ru|функцией 2]]
* 3 = нажата кнопка, определённая ранее функцией 8 (или кнопка закрытия, созданная неявно функцией 0; кнопка минимизации обрабатывается системой и о ней сообщения не приходит;
** поступает, только когда окно активно;
** сбрасывается, когда все кнопки из буфера считаны [[SysFn17/ru|функцией 17]])
* 4 = зарезервировано (в текущей реализации никогда не приходит даже при размаскировке [[SysFn40/ru|функцией 40]])
* 5 = перерисовывается фон рабочего стола (сбрасывается автоматически после перерисовки, так что если во время перерисовки фона программа не ждёт и не проверяет события, то этого события она не заметит)
* 6 = событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
* 7 = произошло событие IPC (смотри [[SysFn60/ru|функцию 60]] - Inter Process Communication; сбрасывается при прочтении)
* 8 = произошло сетевое событие (сбрасывается при прочтении; смотри работу с сетью)
* 9 = произошло отладочное событие (сбрасывается при прочтении; смотри отладочную подсистему)
* 16..31 - ранее использовались для проверки соответствующих IRQ (16=IRQ0, 31=IRQ15) (на новых версиях ядра не генерируются)
 
== Коды ошибок файловой системы ==
 
* 0 = успешно
* 1 = не определена база и/или раздел жёсткого диска (подфункциями 7, 8 функции 21)
* 2 = функция не поддерживается для данной файловой системы
* 3 = неизвестная файловая система
* 4 = зарезервировано, никогда не возвращается в текущей реализации
* 5 = файл не найден
* 6 = файл закончился
* 7 = указатель вне памяти приложения
* 8 = диск заполнен
* 9 = таблица FAT разрушена
* 10 = доступ запрещён
* 11 = ошибка устройства
 
При запуске программы возможны также следующие коды ошибок:
* 30 = 0x1E = недостаточно памяти
* 31 = 0x1F = файл не является исполнимым
* 32 = 0x20 = слишком много процессов
 
 
[[Category:Coding]]

Revision as of 23:30, 17 January 2025

Frequently Asked Questions


Where is the source code? / How do I work with KolibriOS's SVN server?

Get source code
Russian version of page

Is support for NTFS writing planned?

A member who goes by the handle Pathoswithin is working on it, see the related forum topic here

How do I create a bootable CD from the floppy image?

  1. In nero, create a new BOOTABLE cd.
  2. In the BOOT options tab, select 'floppy emulation' and select 'image'.
  3. Set the path of the floppy image.
  4. Create the project, you may also add other data to the disk. (games as doom, quake,..)
  5. Burn it.

How can I boot KolibriOS from...

  1. DualBoot Kolibrios with Windows NT/2K/XP
  2. Booting from GRUB
  3. Booting from USB flash
  4. Booting from PXE

What hardware is supported?

Supported Hardware

Where is all the documentation?

You can find the latest API documention in /kernel/docs/ in the Git repository (Gitea)

What filesystems are supported?

  • FAT12 - read/write (floppy only)
  • FAT32 - read/write
  • NTFS - read only, no encryption
  • EXT2/3 - read/write (write support experimental, use with caution!)
  • XFS - read only
  • CDFS - read only (cd-rom only)

What is kolibri.img?

  • Kolibri.img is essentialy an image of a 3,5" floppy diskette. It contains most programs, libraries, drivers and the kolibri kernel.
  • You write this image to a floppy, or boot the image from harddisk, cd-rom or USB device.
  • Editing the image can be done under windows through winimage, or in linux using dd or mount commands.

See also

  1. HowTo