|
|
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]] | |