Ru/api/kernel: Difference between revisions
Punk Joker (talk | contribs) (Undo revision 4597 by Punk Joker (talk)) |
Bad Dr3dd0x (talk | contribs) m (добавлено примечание для чайников) |
||
(29 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
''' СИСТЕМНЫЕ ФУНКЦИИ KolibriOS | {{DISPLAYTITLE:API ядра}} | ||
''' СИСТЕМНЫЕ ФУНКЦИИ KolibriOS''' | |||
Номер функции помещается в регистр eax. | Номер функции помещается в регистр eax. | ||
Вызов системной функции осуществляется командой "int 0x40". | |||
Вызов системной функции осуществляется командой "int 0x40" (примечание для чайников: int 0x40 — это инструкция для вызова системного вызова из пространства пользователя. Она позволяет перейти из пользовательского пространства в ядро, вызвав прерывание по определённому вектору (в данном случае это вектор 0x40).). | |||
Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются. | Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются. | ||
Line 18: | Line 22: | ||
[[SysFn05/ru | Функция 5]] - пауза. | [[SysFn05/ru | Функция 5]] - пауза. | ||
[[SysFn07/ru | Функция 7]] - вывести изображение в окно. | [[SysFn07/ru | Функция 7]] - вывести изображение в окно. | ||
Line 32: | Line 34: | ||
[[SysFn12/ru|Функция 12]] - начать/закончить перерисовку окна. | [[SysFn12/ru|Функция 12]] - начать/закончить перерисовку окна. | ||
* Подфункция 1 - начать перерисовку окна. | |||
* Подфункция 2 - закончить перерисовку окна. | |||
[[SysFn13/ru|Функция 13]] - нарисовать прямоугольник в окне. | [[SysFn13/ru|Функция 13]] - нарисовать прямоугольник в окне. | ||
Line 38: | Line 42: | ||
[[SysFn15/ru | Функция 15]] - работа с фоновой графикой | [[SysFn15/ru | Функция 15]] - работа с фоновой графикой | ||
* Подфункция 1 - установить размер фонового изображения. | |||
* Подфункция 2 - поставить точку на фоновом изображении. | |||
* Подфункция 3 - перерисовать фон. | |||
* Подфункция 4 - установить режим отрисовки фона. | |||
* Подфункция 5 - поместить блок пикселей на фон. | |||
* Подфункция 6 - спроецировать данные фона на адресное пространство процесса. | |||
* Подфункция 7 - закрыть проекцию данных фона на адресное пространство процесса. | |||
* Подфункция 8 - получить координаты последней отрисовки фона. | |||
* Подфункция 9 - перерисовать прямоугольную часть фона. | |||
[[SysFn16/ru|Функция 16]] - сохранить рамдиск на дискету. | [[SysFn16/ru|Функция 16]] - сохранить рамдиск на дискету. | ||
Line 44: | Line 57: | ||
[[SysFn18/ru|Функция 18]] - системные настройки и информация | [[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. | [[SysFn20/ru|Функция 20]] - интерфейс MIDI. | ||
* Подфункция 1 - сброс | |||
* Подфункция 2 - вывести байт | |||
[[SysFn21/ru|Функция 21]] - установка системных параметров | [[SysFn21/ru|Функция 21]] - установка системных параметров | ||
* Подфункция 1 - установить базовый порт MPU MIDI. | |||
* Подфункция 2 - установить раскладку клавиатуры. | |||
* Подфункция 5 - установить язык системы. | |||
* Подфункция 11 - разрешить/запретить низкоуровневый доступ к HD. | |||
* Подфункция 12 - разрешить/запретить низкоуровневый доступ к PCI. | |||
[[SysFn22/ru|Функция 22]] - установить системную дату/время. | [[SysFn22/ru|Функция 22]] - установить системную дату/время. | ||
Line 53: | Line 97: | ||
[[SysFn23/ru|Функция 23]] - ожидать события с таймаутом. | [[SysFn23/ru|Функция 23]] - ожидать события с таймаутом. | ||
[[SysFn24/ru|Функция 24]] - работа с проигрывателем компакт-дисков | [[SysFn24/ru|Функция 24]] - работа с проигрывателем компакт-дисков. | ||
* Подфункция 4 - извлечь лоток привода диска. | |||
* Подфункция 5 - загрузить лоток привода диска. | |||
Функция | [[SysFn25/ru|Функция 25]] - записать область на слой фона. | ||
Функция | [[SysFn26/ru|Функция 26]] - аппаратный сервис. | ||
* Подфункция 1 - получить базовый порт MPU MIDI. | |||
* Подфункция 2 - получить раскладку клавиатуры. | |||
* Подфункция 5 - получить язык системы. | |||
* Подфункция 9 - получить значение счётчика времени. | |||
* Подфункция 10 - получить значение высокоточного счётчика времени. | |||
* Подфункция 11 - узнать, разрешён ли низкоуровневый доступ к HD. | |||
* Подфункция 12 - узнать, разрешён ли низкоуровневый доступ к PCI. | |||
[[SysFn29/ru|Функция 29]] - получить системную дату. | [[SysFn29/ru|Функция 29]] - получить системную дату. | ||
[[SysFn30/ru|Функция 30]] - работа с текущей папкой. | [[SysFn30/ru|Функция 30]] - работа с текущей папкой. | ||
* Подфункция 1 - установить текущую папку для потока. | |||
* Подфункция 2 - получить активную папку для потока. | |||
* Подфункция 3 - установить доп. системную директорию для ядра. | |||
* Подфункция 4 - установить текущую папку с указанием кодировки. | |||
* Подфункция 5 - получить текущую папку с указанием кодировки. | |||
Функция | [[SysFn34/ru|Функция 34]] - узнать кому принадлежит точка экрана. | ||
[[SysFn35/ru|Функция 35]] - прочитать цвет точки на экране. | [[SysFn35/ru|Функция 35]] - прочитать цвет точки на экране. | ||
Line 80: | Line 128: | ||
[[SysFn37/ru|Функция 37]] - работа с мышью. | [[SysFn37/ru|Функция 37]] - работа с мышью. | ||
* Подфункция 0 - экранные координаты мыши | |||
* Подфункция 1 - координаты мыши относительно окна | |||
* Подфункция 2 - состояния кнопок мыши | |||
* Подфункция 3 - состояния и события кнопок мыши | |||
* Подфункция 4 - загрузить курсор | |||
* Подфункция 5 - установить курсор | |||
* Подфункция 6 - удалить курсор | |||
* Подфункция 7 - данные прокрутки | |||
* Подфункция 8 - загрузить курсор с указанием кодировки | |||
[[SysFn38/ru|Функция 38]] - нарисовать отрезок. | [[SysFn38/ru|Функция 38]] - нарисовать отрезок. | ||
[[SysFn39/ru|Функция 39]] - чтение фона. | [[SysFn39/ru|Функция 39]] - чтение фона. | ||
* Подфункция 1 - получить размер фонового изображения. | |||
* Подфункция 2 - прочитать точку с фонового изображения. | |||
* Подфункция 4 - получить режим отрисовки фона. | |||
[[SysFn40/ru|Функция 40]] - установить маску для ожидаемых событий. | [[SysFn40/ru|Функция 40]] - установить маску для ожидаемых событий. | ||
[[SysFn43/ru|Функция 43]] - ввод/вывод в порт. | [[SysFn43/ru|Функция 43]] - ввод/вывод в порт. | ||
[[SysFn46/ru|Функция 46]] - зарезервировать/освободить группу портов ввода/вывода. | [[SysFn46/ru|Функция 46]] - зарезервировать/освободить группу портов ввода/вывода. | ||
[[SysFn47/ru|Функция 47]] - вывести число в окно. | [[SysFn47/ru|Функция 47]] - вывести число в окно. | ||
[[SysFn48/ru|Функция 48]] - стили отображения окон | [[SysFn48/ru|Функция 48]] - стили отображения окон | ||
* Подфункция 0 - применить настройки экрана. | |||
* Подфункция 1 - установить стиль кнопок. | |||
* Подфункция 2 - установить стандартные цвета окон. | |||
* Подфункция 3 - получить стандартные цвета окон. | |||
* Подфункция 4 - получить высоту скина. | |||
* Подфункция 5 - получить рабочую область экрана. | |||
* Подфункция 6 - установить рабочую область экрана. | |||
* Подфункция 7 - получить область скина для текста заголовка. | |||
* Подфункция 8 - установить используемый скин окон. | |||
* Подфункция 9 - получить настройку сглаживания шрифтов. | |||
* Подфункция 10 - настроить сглаживание шрифтов. | |||
* Подфункция 11 - получить размер шрифтов. | |||
* Подфункция 12 - установить размер шрифтов. | |||
* Подфункция 13 - установить скин с указанием кодировки. | |||
[[SysFn49/ru|Функция 49]] - Advanced Power Management (APM). | [[SysFn49/ru|Функция 49]] - Advanced Power Management (APM). | ||
Line 110: | Line 175: | ||
[[SysFn51/ru|Функция 51]] - создать поток. | [[SysFn51/ru|Функция 51]] - создать поток. | ||
[[ | [[SysFn54/ru|Функция 54]] - работа с буфером обмена | ||
* Подфункция 0 - узнать количество слотов в буфере обмена. | |||
* Подфункция 1 - считать данные из буфера обмена. | |||
* Подфункция 2 - записать данные в буфер обмена. | |||
* Подфункция 3 - удалить последний слот с данными в буфере обмена | |||
* Подфункция 4 - аварийный сброс блокировки буфера | |||
* Подфункция | |||
* Подфункция | |||
* Подфункция | |||
* Подфункция | |||
Функция | [[SysFn55/ru | Функция 55]] - встроенный спикер. | ||
[[SysFn57/ru | Функция 57]] - PCI BIOS. | [[SysFn57/ru | Функция 57]] - PCI BIOS. | ||
[[SysFn60/ru | Функция 60]] - Inter Process Communication (IPC). | [[SysFn60/ru | Функция 60]] - Inter Process Communication (IPC). | ||
* Подфункция 1 - установить область для получения IPC | * Подфункция 1 - установить область для получения IPC | ||
* Подфункция 2 - послать сообщение IPC | |||
[[SysFn61/ru | Функция 61]] - получить параметры для прямого доступа к графике. | [[SysFn61/ru | Функция 61]] - получить параметры для прямого доступа к графике. | ||
* Подфункция 1 - разрешение экрана | |||
* Подфункция 2 - число бит на пиксель | |||
* Подфункция 3 - число байт на строку | |||
[[SysFn62/ru|Функция 62]] - пользовательский доступ к PCI. | [[SysFn62/ru|Функция 62]] - пользовательский доступ к PCI. | ||
Line 144: | Line 201: | ||
* подфункции 4,5,6 - прочитать PCI-регистр. | * подфункции 4,5,6 - прочитать PCI-регистр. | ||
* подфункции 8,9,10 - записать в PCI-регистр. | * подфункции 8,9,10 - записать в PCI-регистр. | ||
[[SysFn63/ru|Функция 63]] - работа с доской отладки. | [[SysFn63/ru|Функция 63]] - работа с доской отладки. | ||
* Подфункция 1 - запись байта | |||
* Подфункция 2 - чтение байта | |||
[[SysFn64/ru|Функция 64]] - перераспределить память приложения. | [[SysFn64/ru|Функция 64]] - перераспределить память приложения. | ||
Line 160: | Line 216: | ||
* Подфункция 4 - установить общесистемную "горячую клавишу". | * Подфункция 4 - установить общесистемную "горячую клавишу". | ||
* Подфункция 5 - удалить установленную "горячую клавишу". | * Подфункция 5 - удалить установленную "горячую клавишу". | ||
* Подфункция 6 - заблокировать обычный ввод. | |||
* Подфункция 7 - разблокировать обычный ввод. | |||
[[SysFn67/ru|Функция 67]] - изменить положение/размеры окна. | [[SysFn67/ru|Функция 67]] - изменить положение/размеры окна. | ||
[[SysFn68/ru|Функция 68]] - внутренние системные службы | [[SysFn68/ru|Функция 68]] - внутренние системные службы. | ||
*Подфункция 0 - получить счётчик переключений задач. | * Подфункция 0 - получить счётчик переключений задач. | ||
*Подфункция 1 - переключиться на следующий поток выполнения. | * Подфункция 1 - переключиться на следующий поток выполнения. | ||
*Подфункция 2 - кэш + rdpmc. | * Подфункция 2 - кэш + rdpmc. | ||
*Подфункция 3 - прочитать MSR-регистр. | * Подфункция 3 - прочитать MSR-регистр. | ||
*Подфункция 4 - записать в MSR-регистр. | * Подфункция 4 - записать в MSR-регистр. | ||
*Подфункция 11 - инициализировать кучу процесса. | * Подфункция 11 - инициализировать кучу процесса. | ||
*Подфункция 12 - выделить блок памяти. | * Подфункция 12 - выделить блок памяти. | ||
*Подфункция 13 - освободить блок памяти. | * Подфункция 13 - освободить блок памяти. | ||
*Подфункция 14 - ожидать извещения от драйвера | * Подфункция 14 - ожидать извещения от драйвера. | ||
* Подфункция 16 - загрузить драйвер. | |||
*Подфункция 16 - загрузить драйвер. | * Подфункция 17 - управление драйвером. | ||
*Подфункция 17 - управление драйвером. | * Подфункция 18 - загрузить DLL с указанием кодировки. | ||
*Подфункция 18 - | * Подфункция 19 - загрузить DLL. | ||
*Подфункция 19 - загрузить DLL. | * Подфункция 20 - перераспределить блок памяти. | ||
*Подфункция 20 - перераспределить блок памяти. | * Подфункция 22 - открыть именованую область памяти. | ||
*Подфункция 22 - открыть именованую область памяти. | * Подфункция 23 - закрыть именованую область памяти. | ||
*Подфункция 23 - закрыть именованую область памяти. | * Подфункция 24 - установить обработчик исключений | ||
* Подфункция 25 - изменить состояние активности сигнала | |||
* Подфункция 26 - освободить страницы памяти | |||
* Подфункция 27 - загузить файл | |||
* Подфункция 28 - загрузить файл с указанием кодировки | |||
* Подфункция 31 - получить данные драйвера | |||
[[SysFn69/ru|Функция 69]] - отладка. | [[SysFn69/ru|Функция 69]] - отладка. | ||
Line 206: | Line 269: | ||
* Подфункция 9 - создание папки. | * Подфункция 9 - создание папки. | ||
[[SysFn71/ru|Функция 71]] - параметры окна. | |||
[[SysFn72/ru|Функция 72]] - послать сообщение окну. | [[SysFn72/ru|Функция 72]] - послать сообщение окну. | ||
[[SysFn73/ru|Функция 73]] - программный блиттер. | [[SysFn73/ru|Функция 73]] - программный блиттер. | ||
[[SysFn-1/ru|Функция -1]] - завершить выполнение потока/процесса | [[SysFn74/ru|Функция 74]] - работа с сетевыми устройствами. | ||
* Подфункция -1 - получить количество активных сетевых устройств. | |||
* Подфункция 0 - получить тип сетевого устройства. | |||
* Подфункция 1 - получить имя сетевого устройства. | |||
* Подфункция 2 - сброс сетевого устройства. | |||
* Подфункция 3 - остановить сетевое устройство. | |||
* Подфункция 4 - получить указатель на устройство. | |||
* Подфункция 6 - получить количество посланых пакетов. | |||
* Подфункция 7 - получить количество принятых пакетов. | |||
* Подфункция 8 - получить количество посланых байт. | |||
* Подфункция 9 - получить количество принятых байт. | |||
* Подфункция 10 - получить статус соединения. | |||
[[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]] - сетевые опции и статистика. | |||
[[SysFn77/ru|Функция 77]] - подсистема POSIX. | |||
* Подфункция 0 - Создать фьютекс | |||
* Подфункция 1 - Удалить фьютекс | |||
* Подфункция 2 - Ожидать | |||
* Подфункция 3 - Разбудить | |||
* Подфункция 4 - Зарезервирована | |||
* Подфункция 5 - Зарезервирована | |||
* Подфункция 6 - Зарезервирована | |||
* Подфункция 7 - Зарезервирована | |||
* Подфункция 8 - open(), пока не реализована | |||
* Подфункция 9 - close(), пока не реализована | |||
* Подфункция 10 - read(), чтение из файла в буфер | |||
* Подфункция 11 - write(), запись данных из буфера в файл | |||
* Подфункция 12 - dup3(), пока не реализована | |||
* Подфункция 13 - pipe2(), создание канала | |||
[[SysFn80/ru|Функция 80]] - работа с файловой системой с указанием кодировки. | |||
[[SysFn-1/ru|Функция -1]] - завершить выполнение потока/процесса. | |||
== Список событий == | == Список событий == | ||
Очередное событие можно получить вызовом одной из функций 10 | Очередное событие можно получить вызовом одной из [[SysFn10/ru|функций 10]] | ||
(ожидать события), 11 (проверить без ожидания), 23 | (ожидать события), [[SysFn11/ru|11]] (проверить без ожидания), [[SysFn23/ru|23]] | ||
(ожидать в течение заданного времени). | (ожидать в течение заданного времени). | ||
Эти функции возвращают только те события, которые входят в маску, | Эти функции возвращают только те события, которые входят в маску, | ||
устанавливаемую функцией 40. По умолчанию это первые три, чего | устанавливаемую [[SysFn40/ru|функцией 40]]. По умолчанию это первые три, чего | ||
вполне достаточно для многих приложений. | вполне достаточно для многих приложений. | ||
Коды событий: | ''Коды событий:'' | ||
* 1 = сообщение о перерисовке (сбрасывается при вызове функции 0) | * 1 = сообщение о перерисовке (сбрасывается при вызове [[SysFn00/ru|функции 0]]) | ||
* 2 = нажата клавиша на клавиатуре (поступает, только когда окно активно) или нажата "горячая клавиша"; | * 2 = нажата клавиша на клавиатуре (поступает, только когда окно активно) или нажата "горячая клавиша"; | ||
** сбрасывается, когда все клавиши из буфера считаны функцией 2 | ** сбрасывается, когда все клавиши из буфера считаны [[SysFn02/ru|функцией 2]] | ||
* 3 = нажата кнопка, определённая ранее функцией 8 (или кнопка закрытия, созданная неявно функцией 0; кнопка минимизации обрабатывается системой и о ней сообщения не приходит; | * 3 = нажата кнопка, определённая ранее функцией 8 (или кнопка закрытия, созданная неявно функцией 0; кнопка минимизации обрабатывается системой и о ней сообщения не приходит; | ||
** поступает, только когда окно активно; | ** поступает, только когда окно активно; | ||
** сбрасывается, когда все кнопки из буфера считаны функцией 17) | ** сбрасывается, когда все кнопки из буфера считаны [[SysFn17/ru|функцией 17]]) | ||
* 4 = зарезервировано (в текущей реализации никогда не приходит даже при размаскировке функцией 40) | * 4 = зарезервировано (в текущей реализации никогда не приходит даже при размаскировке [[SysFn40/ru|функцией 40]]) | ||
* 5 = перерисовывается фон рабочего стола (сбрасывается автоматически после перерисовки, так что если во время перерисовки фона программа не ждёт и не проверяет события, то этого события она не заметит) | * 5 = перерисовывается фон рабочего стола (сбрасывается автоматически после перерисовки, так что если во время перерисовки фона программа не ждёт и не проверяет события, то этого события она не заметит) | ||
* 6 = событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении) | * 6 = событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении) | ||
* 7 = произошло событие IPC (смотри функцию 60 - Inter Process Communication; сбрасывается при прочтении) | * 7 = произошло событие IPC (смотри [[SysFn60/ru|функцию 60]] - Inter Process Communication; сбрасывается при прочтении) | ||
* 8 = произошло сетевое событие (сбрасывается при прочтении; смотри работу с сетью) | * 8 = произошло сетевое событие (сбрасывается при прочтении; смотри работу с сетью) | ||
* 9 = произошло отладочное событие (сбрасывается при прочтении; смотри отладочную подсистему) | * 9 = произошло отладочное событие (сбрасывается при прочтении; смотри отладочную подсистему) | ||
* 16..31 - ранее использовались для проверки | * 16..31 - ранее использовались для проверки соответствующих IRQ (16=IRQ0, 31=IRQ15) (на новых версиях ядра не генерируются) | ||
== Коды ошибок файловой системы == | == Коды ошибок файловой системы == | ||
* 0 = успешно | * 0 = успешно | ||
* 2 = функция не поддерживается для данной файловой системы | * 2 = функция не поддерживается для данной файловой системы | ||
* 3 = неизвестная файловая система | * 3 = неизвестная файловая система | ||
* 5 = файл не найден | * 5 = файл не найден | ||
* 6 = файл закончился | * 6 = файл закончился | ||
* 7 = указатель вне памяти приложения | * 7 = указатель вне памяти приложения | ||
* 8 = диск заполнен | * 8 = диск заполнен | ||
* 9 = | * 9 = ошибка файловой системы | ||
* 10 = доступ запрещён | * 10 = доступ запрещён | ||
* 11 = ошибка устройства | * 11 = ошибка устройства | ||
* 12 = файловой системе недостаточно оперативной памяти | |||
При запуске программы возможны также следующие коды ошибок: | При запуске программы возможны также следующие коды ошибок: | ||
Line 259: | Line 365: | ||
* 32 = 0x20 = слишком много процессов | * 32 = 0x20 = слишком много процессов | ||
{{System_functions}} | |||
[[Category:Coding]] | [[Category:Coding]] |
Latest revision as of 01:46, 16 November 2024
СИСТЕМНЫЕ ФУНКЦИИ KolibriOS
Номер функции помещается в регистр eax.
Вызов системной функции осуществляется командой "int 0x40" (примечание для чайников: int 0x40 — это инструкция для вызова системного вызова из пространства пользователя. Она позволяет перейти из пользовательского пространства в ядро, вызвав прерывание по определённому вектору (в данном случае это вектор 0x40).).
Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.
Перечень функций
Функция 0 - определить и нарисовать окно.
Функция 1 - поставить точку в окне.
Функция 2 - получить код нажатой клавиши.
Функция 3 - получить системное время.
Функция 4 - вывести строку текста в окно.
Функция 5 - пауза.
Функция 7 - вывести изображение в окно.
Функция 8 - определить/удалить кнопку.
Функция 9 - информация о потоке выполнения.
Функция 10 - ожидать события.
Функция 11 - проверить, есть ли событие, без ожидания.
Функция 12 - начать/закончить перерисовку окна.
- Подфункция 1 - начать перерисовку окна.
- Подфункция 2 - закончить перерисовку окна.
Функция 13 - нарисовать прямоугольник в окне.
Функция 14 - получить размеры экрана.
Функция 15 - работа с фоновой графикой
- Подфункция 1 - установить размер фонового изображения.
- Подфункция 2 - поставить точку на фоновом изображении.
- Подфункция 3 - перерисовать фон.
- Подфункция 4 - установить режим отрисовки фона.
- Подфункция 5 - поместить блок пикселей на фон.
- Подфункция 6 - спроецировать данные фона на адресное пространство процесса.
- Подфункция 7 - закрыть проекцию данных фона на адресное пространство процесса.
- Подфункция 8 - получить координаты последней отрисовки фона.
- Подфункция 9 - перерисовать прямоугольную часть фона.
Функция 16 - сохранить рамдиск на дискету.
Функция 17 - получить код нажатой кнопки.
Функция 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 - управление положением окна относительно других окон.
Функция 20 - интерфейс MIDI.
- Подфункция 1 - сброс
- Подфункция 2 - вывести байт
Функция 21 - установка системных параметров
- Подфункция 1 - установить базовый порт MPU MIDI.
- Подфункция 2 - установить раскладку клавиатуры.
- Подфункция 5 - установить язык системы.
- Подфункция 11 - разрешить/запретить низкоуровневый доступ к HD.
- Подфункция 12 - разрешить/запретить низкоуровневый доступ к PCI.
Функция 22 - установить системную дату/время.
Функция 23 - ожидать события с таймаутом.
Функция 24 - работа с проигрывателем компакт-дисков.
- Подфункция 4 - извлечь лоток привода диска.
- Подфункция 5 - загрузить лоток привода диска.
Функция 25 - записать область на слой фона.
Функция 26 - аппаратный сервис.
- Подфункция 1 - получить базовый порт MPU MIDI.
- Подфункция 2 - получить раскладку клавиатуры.
- Подфункция 5 - получить язык системы.
- Подфункция 9 - получить значение счётчика времени.
- Подфункция 10 - получить значение высокоточного счётчика времени.
- Подфункция 11 - узнать, разрешён ли низкоуровневый доступ к HD.
- Подфункция 12 - узнать, разрешён ли низкоуровневый доступ к PCI.
Функция 29 - получить системную дату.
Функция 30 - работа с текущей папкой.
- Подфункция 1 - установить текущую папку для потока.
- Подфункция 2 - получить активную папку для потока.
- Подфункция 3 - установить доп. системную директорию для ядра.
- Подфункция 4 - установить текущую папку с указанием кодировки.
- Подфункция 5 - получить текущую папку с указанием кодировки.
Функция 34 - узнать кому принадлежит точка экрана.
Функция 35 - прочитать цвет точки на экране.
Функция 36 - прочитать область экрана.
Функция 37 - работа с мышью.
- Подфункция 0 - экранные координаты мыши
- Подфункция 1 - координаты мыши относительно окна
- Подфункция 2 - состояния кнопок мыши
- Подфункция 3 - состояния и события кнопок мыши
- Подфункция 4 - загрузить курсор
- Подфункция 5 - установить курсор
- Подфункция 6 - удалить курсор
- Подфункция 7 - данные прокрутки
- Подфункция 8 - загрузить курсор с указанием кодировки
Функция 38 - нарисовать отрезок.
Функция 39 - чтение фона.
- Подфункция 1 - получить размер фонового изображения.
- Подфункция 2 - прочитать точку с фонового изображения.
- Подфункция 4 - получить режим отрисовки фона.
Функция 40 - установить маску для ожидаемых событий.
Функция 43 - ввод/вывод в порт.
Функция 46 - зарезервировать/освободить группу портов ввода/вывода.
Функция 47 - вывести число в окно.
Функция 48 - стили отображения окон
- Подфункция 0 - применить настройки экрана.
- Подфункция 1 - установить стиль кнопок.
- Подфункция 2 - установить стандартные цвета окон.
- Подфункция 3 - получить стандартные цвета окон.
- Подфункция 4 - получить высоту скина.
- Подфункция 5 - получить рабочую область экрана.
- Подфункция 6 - установить рабочую область экрана.
- Подфункция 7 - получить область скина для текста заголовка.
- Подфункция 8 - установить используемый скин окон.
- Подфункция 9 - получить настройку сглаживания шрифтов.
- Подфункция 10 - настроить сглаживание шрифтов.
- Подфункция 11 - получить размер шрифтов.
- Подфункция 12 - установить размер шрифтов.
- Подфункция 13 - установить скин с указанием кодировки.
Функция 49 - Advanced Power Management (APM).
Функция 50 - установка формы окна.
Функция 51 - создать поток.
Функция 54 - работа с буфером обмена
- Подфункция 0 - узнать количество слотов в буфере обмена.
- Подфункция 1 - считать данные из буфера обмена.
- Подфункция 2 - записать данные в буфер обмена.
- Подфункция 3 - удалить последний слот с данными в буфере обмена
- Подфункция 4 - аварийный сброс блокировки буфера
Функция 55 - встроенный спикер.
Функция 57 - PCI BIOS.
Функция 60 - Inter Process Communication (IPC).
- Подфункция 1 - установить область для получения IPC
- Подфункция 2 - послать сообщение IPC
Функция 61 - получить параметры для прямого доступа к графике.
- Подфункция 1 - разрешение экрана
- Подфункция 2 - число бит на пиксель
- Подфункция 3 - число байт на строку
Функция 62 - пользовательский доступ к PCI.
- Подфункция 0 - получить версию PCI-интерфейса.
- Подфункция 1 - получить номер последней PCI-шины.
- Подфункция 2 - Получить механизм обращения к конфигурационному пространству PCI.
- подфункции 4,5,6 - прочитать PCI-регистр.
- подфункции 8,9,10 - записать в PCI-регистр.
Функция 63 - работа с доской отладки.
- Подфункция 1 - запись байта
- Подфункция 2 - чтение байта
Функция 64 - перераспределить память приложения.
Функция 65 - вывести изображение с палитрой в окно.
Функция 66 - работа с клавиатурой.
- Подфункция 1 - установить режим ввода с клавиатуры.
- Подфункция 2 - получить режим ввода с клавиатуры.
- Подфункция 3 - получить состояние управляющих клавиш.
- Подфункция 4 - установить общесистемную "горячую клавишу".
- Подфункция 5 - удалить установленную "горячую клавишу".
- Подфункция 6 - заблокировать обычный ввод.
- Подфункция 7 - разблокировать обычный ввод.
Функция 67 - изменить положение/размеры окна.
Функция 68 - внутренние системные службы.
- Подфункция 0 - получить счётчик переключений задач.
- Подфункция 1 - переключиться на следующий поток выполнения.
- Подфункция 2 - кэш + rdpmc.
- Подфункция 3 - прочитать MSR-регистр.
- Подфункция 4 - записать в MSR-регистр.
- Подфункция 11 - инициализировать кучу процесса.
- Подфункция 12 - выделить блок памяти.
- Подфункция 13 - освободить блок памяти.
- Подфункция 14 - ожидать извещения от драйвера.
- Подфункция 16 - загрузить драйвер.
- Подфункция 17 - управление драйвером.
- Подфункция 18 - загрузить DLL с указанием кодировки.
- Подфункция 19 - загрузить DLL.
- Подфункция 20 - перераспределить блок памяти.
- Подфункция 22 - открыть именованую область памяти.
- Подфункция 23 - закрыть именованую область памяти.
- Подфункция 24 - установить обработчик исключений
- Подфункция 25 - изменить состояние активности сигнала
- Подфункция 26 - освободить страницы памяти
- Подфункция 27 - загузить файл
- Подфункция 28 - загрузить файл с указанием кодировки
- Подфункция 31 - получить данные драйвера
Функция 69 - отладка.
- Подфункция 0 - определить область данных для отладочных сообщений.
- Подфункция 1 - получить состояние регистров отлаживаемого потока.
- Подфункция 2 - установить состояние регистров отлаживаемого потока.
- Подфункция 3 - отключиться от отлаживаемого процесса.
- Подфункция 4 - приостановить поток.
- Подфункция 5 - возобновить выполнение потока.
- Подфункция 6 - прочитать из памяти отлаживаемого процесса.
- Подфункция 7 - записать в память отлаживаемого процесса.
- Подфункция 8 - завершить отлаживаемый поток.
- Подфункция 9 - установить/снять аппаратную точку останова.
Функция 70 - работа с файловой системой с поддержкой длинных имён.
- Подфункция 0 - чтение файла с поддержкой длинных имён.
- Подфункция 1 - чтение папки с поддержкой длинных имён.
- Подфункция 2 - создание/перезапись файла с поддержкой длинных имён.
- Подфункция 3 - запись в существующий файл с поддержкой длинных имён.
- Подфункция 4 - установка размера файла.
- Подфункция 5 - получение информации о файле/папке.
- Подфункция 6 - установка атрибутов файла/папки.
- Подфункция 7 - запуск программы.
- Подфункция 8 - удаление файла/папки.
- Подфункция 9 - создание папки.
Функция 71 - параметры окна.
Функция 72 - послать сообщение окну.
Функция 73 - программный блиттер.
Функция 74 - работа с сетевыми устройствами.
- Подфункция -1 - получить количество активных сетевых устройств.
- Подфункция 0 - получить тип сетевого устройства.
- Подфункция 1 - получить имя сетевого устройства.
- Подфункция 2 - сброс сетевого устройства.
- Подфункция 3 - остановить сетевое устройство.
- Подфункция 4 - получить указатель на устройство.
- Подфункция 6 - получить количество посланых пакетов.
- Подфункция 7 - получить количество принятых пакетов.
- Подфункция 8 - получить количество посланых байт.
- Подфункция 9 - получить количество принятых байт.
- Подфункция 10 - получить статус соединения.
Функция 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 (Получить парный сокет).
Функция 76 - сетевые опции и статистика.
Функция 77 - подсистема POSIX.
- Подфункция 0 - Создать фьютекс
- Подфункция 1 - Удалить фьютекс
- Подфункция 2 - Ожидать
- Подфункция 3 - Разбудить
- Подфункция 4 - Зарезервирована
- Подфункция 5 - Зарезервирована
- Подфункция 6 - Зарезервирована
- Подфункция 7 - Зарезервирована
- Подфункция 8 - open(), пока не реализована
- Подфункция 9 - close(), пока не реализована
- Подфункция 10 - read(), чтение из файла в буфер
- Подфункция 11 - write(), запись данных из буфера в файл
- Подфункция 12 - dup3(), пока не реализована
- Подфункция 13 - pipe2(), создание канала
Функция 80 - работа с файловой системой с указанием кодировки.
Функция -1 - завершить выполнение потока/процесса.
Список событий
Очередное событие можно получить вызовом одной из функций 10 (ожидать события), 11 (проверить без ожидания), 23 (ожидать в течение заданного времени). Эти функции возвращают только те события, которые входят в маску, устанавливаемую функцией 40. По умолчанию это первые три, чего вполне достаточно для многих приложений. Коды событий:
- 1 = сообщение о перерисовке (сбрасывается при вызове функции 0)
- 2 = нажата клавиша на клавиатуре (поступает, только когда окно активно) или нажата "горячая клавиша";
- сбрасывается, когда все клавиши из буфера считаны функцией 2
- 3 = нажата кнопка, определённая ранее функцией 8 (или кнопка закрытия, созданная неявно функцией 0; кнопка минимизации обрабатывается системой и о ней сообщения не приходит;
- поступает, только когда окно активно;
- сбрасывается, когда все кнопки из буфера считаны функцией 17)
- 4 = зарезервировано (в текущей реализации никогда не приходит даже при размаскировке функцией 40)
- 5 = перерисовывается фон рабочего стола (сбрасывается автоматически после перерисовки, так что если во время перерисовки фона программа не ждёт и не проверяет события, то этого события она не заметит)
- 6 = событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
- 7 = произошло событие IPC (смотри функцию 60 - Inter Process Communication; сбрасывается при прочтении)
- 8 = произошло сетевое событие (сбрасывается при прочтении; смотри работу с сетью)
- 9 = произошло отладочное событие (сбрасывается при прочтении; смотри отладочную подсистему)
- 16..31 - ранее использовались для проверки соответствующих IRQ (16=IRQ0, 31=IRQ15) (на новых версиях ядра не генерируются)
Коды ошибок файловой системы
- 0 = успешно
- 2 = функция не поддерживается для данной файловой системы
- 3 = неизвестная файловая система
- 5 = файл не найден
- 6 = файл закончился
- 7 = указатель вне памяти приложения
- 8 = диск заполнен
- 9 = ошибка файловой системы
- 10 = доступ запрещён
- 11 = ошибка устройства
- 12 = файловой системе недостаточно оперативной памяти
При запуске программы возможны также следующие коды ошибок:
- 30 = 0x1E = недостаточно памяти
- 31 = 0x1F = файл не является исполнимым
- 32 = 0x20 = слишком много процессов
|