Difference between revisions of "Ru/api/kernel"

From KolibriOS wiki
Jump to navigation Jump to search
Line 5: Line 5:
 
Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.
 
Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.
  
 +
== Перечень функций ==
  
== Функция 0 - определить и нарисовать окно. ==
+
[[SysFn00/ru | Функция 0]] - определить и нарисовать окно.
  
Определяет окно приложения. Рисует рамку окна, заголовок и рабочую
+
[[SysFn01/ru | Функция 1]] - поставить точку в окне.
область. Для окон со скином определяет стандартные кнопки закрытия и
 
минимизации.
 
  
Описание функции перенесено в отдельную статью: [[SysFn00/ru | Функция 0]]
+
[[SysFn02/ru | Функция 2]] - получить код нажатой клавиши.
  
== Функция 1 - поставить точку в окне. ==
+
[[SysFn03/ru | Функция 3]] - получить системное время.
  
Описание функции перенесено в отдельную статью: [[SysFn01/ru | Функция 1]]
+
[[SysFn04/ru | Функция 4]] - вывести строку текста в окно.
  
== Функция 2 - получить код нажатой клавиши. ==
+
[[SysFn05/ru | Функция 5]] - пауза.
  
Извлекает из буфера код нажатой клавиши.
+
[[SysFn06/ru | Функция 6]] - прочитать файл с рамдиска.
  
Описание функции перенесено в отдельную статью: [[SysFn02/ru | Функция 2]]
+
[[SysFn07/ru | Функция 7]] - вывести изображение в окно.
  
== Функция 3 - получить системное время. ==
+
[[SysFn08/ru | Функция 8]] - определить/удалить кнопку.
  
Описание функции перенесено в отдельную статью: [[SysFn03/ru | Функция 3]]
+
[[SysFn09/ru | Функция 9]] - информация о потоке выполнения.
  
== Функция 4 - вывести строку текста в окно. ==
+
[[SysFn10/ru | Функция 10]] - ожидать события.
  
Описание функции перенесено в отдельную статью: [[SysFn04/ru | Функция 4]]
+
[[SysFn11/ru|Функция 11]] - проверить, есть ли событие, без ожидания.
  
== Функция 5 - пауза. ==
+
[[SysFn12/ru|Функция 12]] - начать/закончить перерисовку окна.
 +
[[SysFn13/ru|Функция 13]] - нарисовать прямоугольник в окне.
  
Задерживает выполнение программы на заданное время.
+
[[SysFn14/ru|Функция 14]] - получить размеры экрана.
  
Описание функции перенесено в отдельную статью: [[SysFn05/ru | Функция 5]]
+
[[SysFn15/ru | Функция 15]] - работа с фоновой графикой
  
== Функция 6 - прочитать файл с рамдиска. ==
+
[[SysFn16/ru|Функция 16]] - сохранить рамдиск на дискету.
  
Описание функции перенесено в отдельную статью: [[SysFn06/ru | Функция 6]]
+
[[SysFn17/ru|Функция 17]] - получить код нажатой кнопки.
  
== Функция 7 - вывести изображение в окно. ==
+
[[SysFn18/ru|Функция 18]] - системные настройки и информация
  
Описание функции перенесено в отдельную статью: [[SysFn07/ru | Функция 7]]
+
[[SysFn20/ru|Функция 20]] - интерфейс MIDI.
  
== Функция 8 - определить/удалить кнопку. ==
+
[[SysFn21/ru|Функция 21]] - установка системных параметров
  
Описание функции перенесено в отдельную статью: [[SysFn08/ru | Функция 8]]
+
[[SysFn22/ru|Функция 22]] - установить системную дату/время.
  
== Функция 9 - информация о потоке выполнения. ==
+
[[SysFn23/ru|Функция 23]] - ожидать события с таймаутом.
  
Описание функции перенесено в отдельную статью: [[SysFn09/ru | Функция 9]]
+
[[SysFn24/ru|Функция 24]] - работа с проигрывателем компакт-дисков
  
== Функция 10 - ожидать события. ==
+
Функция 25 - установить громкость SBPro. - '''Удалена'''
  
Если очередь сообщений пуста, то ждет появления сообщения в очереди. В таком состоянии поток не получает процессорного времени. Затем считывает сообщение из очереди.
+
[[SysFn26/ru|Функция 26]] - аппаратный сервис
  
Описание функции перенесено в отдельную статью: [[SysFn10/ru | Функция 10]]
+
Функция 27  - сведения об этой функции отсутствуют
  
== Функция 11 - проверить, есть ли событие, без ожидания. ==
+
Функция 28 - установить громкость SB16. - '''Удалена'''
  
Если в очереди сообщений есть какое-то событие, то считывает и
+
[[SysFn29/ru|Функция 29]] - получить системную дату.
возвращает его. Если очередь пуста, возвращает нуль.
 
  
Описание функции перенесено в отдельную статью:  [[SysFn11/ru|Функция 11]]
+
[[SysFn30/ru|Функция 30]] - работа с текущей папкой.
  
== Функция 12 - начать/закончить перерисовку окна. ==
+
Функция 31 - сведения об этой функции отсутствуют
  
Подфункция 1 - начать перерисовку окна.
+
Функция 32 - использовалась в ранних версиях КОС для удаления файла с рамдиска.- '''удалена'''
Подфункция 2 - закончить перерисовку окна.
 
  
Перенесены в отдельную статью: [[SysFn12/ru|Функция 12]]
+
Функция 33 - использовалась в ранних версиях КОС для записи файла на рамдиск.-'''удалена'''
  
== Функция 13 - нарисовать прямоугольник в окне. ==
+
Функция 34 - сведения об этой функции отсутствуют
  
Функция перенесена в статью [[SysFn13/ru|Функция 13]]
+
[[SysFn35/ru|Функция 35]] - прочитать цвет точки на экране.
  
== Функция 14 - получить размеры экрана. ==
+
[[SysFn36/ru|Функция 36]] - прочитать область экрана.
  
Описание функции перенесено в отдельную статью: [[SysFn14/ru|Функция 14]]
+
[[SysFn37/ru|Функция 37]] - работа с мышью.
  
== Функция 15 - работа с фоновой графикой ==
+
[[SysFn38/ru|Функция 38]] - нарисовать отрезок.
  
Описание функции перенесено в отдельную статью: [[SysFn15/ru | Функция 15]]
+
[[SysFn39/ru|Функция 39]] - чтение фона.
  
== Функция 16 - сохранить рамдиск на дискету. ==
+
[[SysFn40/ru|Функция 40]] - установить маску для ожидаемых событий.
  
 +
[[SysFn41/ru|Функция 41]] - узнать владельца IRQ.
  
Описание функции перенесено в отдельную статью: [[SysFn16/ru|Функция 16]]
+
[[SysFn42/ru|Функция 42]] - работа с данными, полученными по IRQ.
  
== Функция 17 - получить код нажатой кнопки. ==
+
[[SysFn43/ru|Функция 43]] - ввод/вывод в порт.
  
Описание функции перенесено в отдельную статью: [[SysFn17/ru|Функция 17]]
+
[[SysFn44/ru|Функция 44]] - определить действия при поступлении IRQ.
 +
[[SysFn45/ru|Функция 45]] - зарезервировать/освободить IRQ.
  
== Функция 18 - системные настройки и информация == 
+
[[SysFn46/ru|Функция 46]] - зарезервировать/освободить группу портов ввода/вывода.
 +
* '''Внимание:''' Эта функция устарела и может быть удалена в следующих версиях ядра.
  
Описание функции перенесено в отдельную статью: [[SysFn18/ru|Функция 18]]
+
[[SysFn47/ru|Функция 47]] - вывести число в окно.
  
== Функция 20 - интерфейс MIDI. ==
+
[[SysFn48/ru|Функция 48]] - стили отображения окон
  
Описание функции перенесено в отдельную статью: [[SysFn20/ru|Функция 20]]
+
[[SysFn49/ru|Функция 49]] - Advanced Power Management (APM).
  
== Функция 21 - установка системных параметров ==
+
[[SysFn50/ru|Функция 50]] - установка формы окна.
  
Описание функции перенесено в отдельную статью: [[SysFn21/ru|Функция 21]]
+
[[SysFn51/ru|Функция 51]] - создать поток.
  
== Функция 22 - установить системную дату/время. ==
+
[[SysFn52/ru|Функция 52]] - сетевой сервис.
 +
[[SysFn53/ru|Функция 53]] - работа с сетевым сокетами.
  
Описание функции перенесено в отдельную статью: [[SysFn22/ru|Функция 22]]
+
Функция 54 - Зарезервирована (пихает 0x12345678 в eax).
 
 
== Функция 23 - ожидать события с таймаутом. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn23/ru|Функция 23]]
 
 
 
== Функция 24 - работа с проигрывателем компакт-дисков ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn24/ru|Функция 24]]
 
 
 
== Функция 25 - установить громкость SBPro. ==
 
 
 
''Удалена''
 
 
 
== Функция 26 - аппаратный сервис ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn26/ru|Функция 26]]
 
 
 
== Функция 27  ==
 
 
 
сведения об этой функции отсутствуют
 
 
 
== Функция 28 - установить громкость SB16. ==
 
 
 
Удалена
 
 
 
== Функция 29 - получить системную дату. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn29/ru|Функция 29]]
 
 
 
== Функция 30 - работа с текущей папкой. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn30/ru|Функция 30]]
 
 
 
== Функция 31  ==
 
 
 
сведения об этой функции отсутствуют
 
 
 
== Функция 32  ==
 
 
 
Системная функция с этим номером использовалась в ранних версиях КОС для удаления файла с рамдиска.
 
'''удалена'''
 
 
 
== Функция 33  ==
 
 
 
Системная функция с этим номером использовалась в ранних версиях КОС для записи файла на рамдиск.
 
'''удалена'''
 
 
 
== Функция 34  ==
 
 
 
сведения об этой функции отсутствуют
 
 
 
== Функция 35 - прочитать цвет точки на экране. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn35/ru|Функция 35]]
 
 
 
== Функция 36 - прочитать область экрана. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn36/ru|Функция 36]]
 
 
 
== Функция 37 - работа с мышью. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn37/ru|Функция 37]]
 
 
 
== Функция 38 - нарисовать отрезок. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn38/ru|Функция 38]]
 
 
 
== Функция 39 - чтение фона. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn39/ru|Функция 39]]
 
 
 
== Функция 40 - установить маску для ожидаемых событий. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn40/ru|Функция 40]]
 
 
 
== Функция 41 - узнать владельца IRQ. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn41/ru|Функция 41]]
 
 
 
== Функция 42 - работа с данными, полученными по IRQ. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn42/ru|Функция 42]]
 
 
 
== Функция 43 - ввод/вывод в порт. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn43/ru|Функция 43]]
 
 
 
== Функция 44 - определить действия при поступлении IRQ. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn44/ru|Функция 44]]
 
 
 
== Функция 45 - зарезервировать/освободить IRQ. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn45/ru|Функция 45]]
 
 
 
== Функция 46 - зарезервировать/освободить группу портов ввода/вывода.==
 
 
 
'''Внимание:''' Эта функция устарела и может быть удалена в следующих версиях ядра.
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn46/ru|Функция 46]]
 
 
 
== Функция 47 - вывести число в окно. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn47/ru|Функция 47]]
 
 
 
== Функция 48 - стили отображения окон ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn48/ru|Функция 48]]
 
 
 
== Функция 49 - Advanced Power Management (APM). ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn49/ru|Функция 49]]
 
 
 
== Функция 50 - установка формы окна. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn50/ru|Функция 50]]
 
 
 
== Функция 51 - создать поток. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn51/ru|Функция 51]]
 
 
 
== Функция 52 - сетевой сервис. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn52/ru|Функция 52]]
 
 
 
== Функция 53 - работа с сетевым сокетами. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn53/ru|Функция 53]]
 
 
 
== Функция 54  ==
 
 
 
Зарезервирована (пихает 0x12345678 в eax).
 
 
 
== Функция 55 - аудио сервис. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn55/ru | Функция 55]]
 
  
 +
[[SysFn55/ru | Функция 55]] - аудио сервис.
 
* Подфункция 0 - загрузить данные для SB16.
 
* Подфункция 0 - загрузить данные для SB16.
 
* Подфункция 1 - начать проигрывать данные на SB16.
 
* Подфункция 1 - начать проигрывать данные на SB16.
Line 252: Line 119:
 
* Подфункция 55 - начать проигрывать данные на встроенном спикере.
 
* Подфункция 55 - начать проигрывать данные на встроенном спикере.
  
== Функция 57 - PCI BIOS. ==
+
[[SysFn57/ru | Функция 57]] - PCI BIOS.
 
 
Описание функции перенесено в отдельную статью: [[SysFn57/ru | Функция 57]]
 
 
 
== Функция 58 - работа с файловой системой. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn58/ru | Функция 58]]
 
  
 +
[[SysFn58/ru | Функция 58]] - работа с файловой системой.
 
* Подфункция 0 - прочитать файл/папку.
 
* Подфункция 0 - прочитать файл/папку.
 
* Подфункция 8 - LBA-чтение с устройства.
 
* Подфункция 8 - LBA-чтение с устройства.
 
* Подфункция 15 - получить информацию о файловой системе.
 
* Подфункция 15 - получить информацию о файловой системе.
  
== Функция 60 - Inter Process Communication (IPC). ==
+
[[SysFn60/ru | Функция 60]] - Inter Process Communication (IPC).
 +
* Подфункция 1 - установить область для получения IPC
  
Описание функции перенесено в отдельную статью: [[SysFn60/ru | Функция 60]]
+
[[SysFn61/ru | Функция 61]] - получить параметры для прямого доступа к графике.
 
 
Подфункция 1 - установить область для получения IPC
 
 
 
== Функция 61 - получить параметры для прямого доступа к графике. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn61/ru | Функция 61]]
 
 
 
== Функция 62 - пользовательский доступ к PCI. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn62/ru|Функция 62]]
 
  
 +
[[SysFn62/ru|Функция 62]] - пользовательский доступ к PCI.
 
* Подфункция 0 - получить версию PCI-интерфейса.
 
* Подфункция 0 - получить версию PCI-интерфейса.
 
* Подфункция 1 - получить номер последней PCI-шины.
 
* Подфункция 1 - получить номер последней PCI-шины.
Line 287: Line 141:
 
* подфункция 13 - освободить линейные адреса MMIO
 
* подфункция 13 - освободить линейные адреса MMIO
  
== Функция 63 - работа с доской отладки. ==
+
[[SysFn63/ru|Функция 63]] - работа с доской отладки.
 
 
Описание функции перенесено в отдельную статью: [[SysFn63/ru|Функция 63]]
 
 
 
== Функция 64 - перераспределить память приложения. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn64/ru|Функция 64]]
 
 
 
== Функция 65 - вывести изображение с палитрой в окно. ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn65/ru|Функция 65]]
 
  
== Функция 66 - работа с клавиатурой. ==
+
[[SysFn64/ru|Функция 64]] - перераспределить память приложения.
  
Описание функции перенесено в отдельную статью: [[SysFn66/ru|Функция 66]]
+
[[SysFn65/ru|Функция 65]] - вывести изображение с палитрой в окно.
  
 +
[[SysFn66/ru|Функция 66]] - работа с клавиатурой.
 
* Подфункция 1 - установить режим ввода с клавиатуры.
 
* Подфункция 1 - установить режим ввода с клавиатуры.
 
* Подфункция 2 - получить режим ввода с клавиатуры.
 
* Подфункция 2 - получить режим ввода с клавиатуры.
Line 309: Line 154:
 
* Подфункция 5 - удалить установленную "горячую клавишу".
 
* Подфункция 5 - удалить установленную "горячую клавишу".
  
== Функция 67 - изменить положение/размеры окна. ==
+
[[SysFn67/ru|Функция 67]] - изменить положение/размеры окна.
 
 
Описание функции перенесено в отдельную статью: [[SysFn67/ru|Функция 67]]
 
 
 
== Функция 68 - внутренние системные службы ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn68/ru|Функция 68]]
 
  
 +
[[SysFn68/ru|Функция 68]] - внутренние системные службы
 
*Подфункция 0 - получить счётчик переключений задач.
 
*Подфункция 0 - получить счётчик переключений задач.
 
*Подфункция 1 - переключиться на следующий поток выполнения.
 
*Подфункция 1 - переключиться на следующий поток выполнения.
Line 335: Line 175:
 
*Подфункция 23 - закрыть именованую область памяти.
 
*Подфункция 23 - закрыть именованую область памяти.
  
== Функция 69 - отладка. ==
+
[[SysFn69/ru|Функция 69]] - отладка.
 
 
Описание функции перенесено в отдельную статью: [[SysFn69/ru|Функция 69]]
 
 
 
 
*Подфункция 0 - определить область данных для отладочных сообщений.
 
*Подфункция 0 - определить область данных для отладочных сообщений.
 
*Подфункция 1 - получить состояние регистров отлаживаемого потока.
 
*Подфункция 1 - получить состояние регистров отлаживаемого потока.
Line 350: Line 187:
 
*Подфункция 9 - установить/снять аппаратную точку останова.
 
*Подфункция 9 - установить/снять аппаратную точку останова.
  
== Функция 70 - работа с файловой системой с поддержкой длинных имён. ==
+
[[SysFn70/ru|Функция 70]] - работа с файловой системой с поддержкой длинных имён.
 
 
Описание функции перенесено в отдельную статью: [[SysFn70/ru|Функция 70]]
 
 
 
 
* Подфункция 0 - чтение файла с поддержкой длинных имён.
 
* Подфункция 0 - чтение файла с поддержкой длинных имён.
 
* Подфункция 1 - чтение папки с поддержкой длинных имён.
 
* Подфункция 1 - чтение папки с поддержкой длинных имён.
Line 365: Line 199:
 
* Подфункция 9 - создание папки.
 
* Подфункция 9 - создание папки.
  
== Функция 71 - параметры окна  ==
+
Описание функции перенесено в отдельную статью: [[SysFn71/ru|Функция 71]] - параметры окна
 
 
Описание функции перенесено в отдельную статью: [[SysFn71/ru|Функция 71]]
 
 
 
 
* Подфункция 1 - установить заголовок окна программы.
 
* Подфункция 1 - установить заголовок окна программы.
  
== Функция 72 - послать сообщение окну. ==
+
[[SysFn72/ru|Функция 72]] - послать сообщение окну.
 +
* Подфункция 1 - послать сообщение с параметром активному окну.
  
Описание функции перенесено в отдельную статью: [[SysFn72/ru|Функция 72]]
+
[[SysFn-1/ru|Функция -1]] - завершить выполнение потока/процесса
 
 
Подфункция 1 - послать сообщение с параметром активному окну.
 
 
 
== Функция -1 - завершить выполнение потока/процесса ==
 
 
 
Описание функции перенесено в отдельную статью: [[SysFn-1/ru|Функция -1]]
 
  
 
== Список событий ==
 
== Список событий ==
Line 390: Line 216:
 
вполне достаточно для многих приложений.
 
вполне достаточно для многих приложений.
 
Коды событий:
 
Коды событий:
  * 1 = сообщение о перерисовке (сбрасывается при вызове функции 0)
+
* 1 = сообщение о перерисовке (сбрасывается при вызове функции 0)
  * 2 = нажата клавиша на клавиатуре (поступает, только когда окно
+
* 2 = нажата клавиша на клавиатуре (поступает, только когда окно активно) или нажата "горячая клавиша";
    активно) или нажата "горячая клавиша";
+
** сбрасывается, когда все клавиши из буфера считаны функцией 2
    сбрасывается, когда все клавиши из буфера считаны функцией 2
+
* 3 = нажата кнопка, определённая ранее функцией 8 (или кнопка закрытия, созданная неявно функцией 0; кнопка минимизации обрабатывается системой и о ней сообщения не приходит;
  * 3 = нажата кнопка, определённая ранее функцией 8 (или кнопка
+
** поступает, только когда окно активно;  
    закрытия, созданная неявно функцией 0; кнопка минимизации
+
** сбрасывается, когда все кнопки из буфера считаны функцией 17)
    обрабатывается системой и о ней сообщения не приходит;
+
* 4 = зарезервировано (в текущей реализации никогда не приходит даже при размаскировке функцией 40)
    поступает, только когда окно активно; сбрасывается, когда все
+
* 5 = перерисовывается фон рабочего стола (сбрасывается автоматически после перерисовки, так что если во время перерисовки фона программа не ждёт и не проверяет события, то этого события она не заметит)
    кнопки из буфера считаны функцией 17)
+
* 6 = событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
  * 4 = зарезервировано (в текущей реализации никогда не приходит даже
+
* 7 = произошло событие IPC (смотри функцию 60 - Inter Process Communication; сбрасывается при прочтении)
    при размаскировке функцией 40)
+
* 8 = произошло сетевое событие (сбрасывается при прочтении; смотри работу с сетью)
  * 5 = перерисовывается фон рабочего стола (сбрасывается
+
* 9 = произошло отладочное событие (сбрасывается при прочтении; смотри отладочную подсистему)
    автоматически после перерисовки, так что если во время перерисовки
+
* 16..31 = произошло событие с соответствующим IRQ (16=IRQ0, 31=IRQ15) (сбрасывается при считывании всех данных IRQ)
    фона программа не ждёт и не проверяет события, то этого события
 
    она не заметит)
 
  * 6 = событие от мыши (что-то случилось - нажатие на кнопку мыши
 
    или перемещение; сбрасывается при прочтении)
 
  * 7 = произошло событие IPC (смотри функцию 60 - Inter Process
 
    Communication; сбрасывается при прочтении)
 
  * 8 = произошло сетевое событие (сбрасывается при прочтении;
 
    смотри работу с сетью)
 
  * 9 = произошло отладочное событие (сбрасывается при прочтении;
 
    смотри отладочную подсистему)
 
  * 16..31 = произошло событие с соответствующим IRQ
 
    (16=IRQ0, 31=IRQ15) (сбрасывается при считывании всех данных IRQ)
 
  
 +
== Коды ошибок файловой системы ==
  
== Коды ошибок файловой системы ==
+
* 0 = успешно
 +
* 1 = не определена база и/или раздел жёсткого диска (подфункциями 7, 8 функции 21)
 +
* 2 = функция не поддерживается для данной файловой системы
 +
* 3 = неизвестная файловая система
 +
* 4 = зарезервировано, никогда не возвращается в текущей реализации
 +
* 5 = файл не найден
 +
* 6 = файл закончился
 +
* 7 = указатель вне памяти приложения
 +
* 8 = диск заполнен
 +
* 9 = таблица FAT разрушена
 +
* 10 = доступ запрещён
 +
* 11 = ошибка устройства
  
  * 0 = успешно
 
  * 1 = не определена база и/или раздел жёсткого диска (подфункциями
 
    7, 8 функции 21)
 
  * 2 = функция не поддерживается для данной файловой системы
 
  * 3 = неизвестная файловая система
 
  * 4 = зарезервировано, никогда не возвращается в текущей реализации
 
  * 5 = файл не найден
 
  * 6 = файл закончился
 
  * 7 = указатель вне памяти приложения
 
  * 8 = диск заполнен
 
  * 9 = таблица FAT разрушена
 
  * 10 = доступ запрещён
 
  * 11 = ошибка устройства
 
 
При запуске программы возможны также следующие коды ошибок:
 
При запуске программы возможны также следующие коды ошибок:
  * 30 = 0x1E = недостаточно памяти
+
* 30 = 0x1E = недостаточно памяти
  * 31 = 0x1F = файл не является исполнимым
+
* 31 = 0x1F = файл не является исполнимым
  * 32 = 0x20 = слишком много процессов
+
* 32 = 0x20 = слишком много процессов
  
 
[[Category:Coding]]
 
[[Category:Coding]]

Revision as of 14:14, 24 June 2010

СИСТЕМНЫЕ ФУНКЦИИ KolibriOS 0.7.7.0

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

Перечень функций

Функция 0 - определить и нарисовать окно.

Функция 1 - поставить точку в окне.

Функция 2 - получить код нажатой клавиши.

Функция 3 - получить системное время.

Функция 4 - вывести строку текста в окно.

Функция 5 - пауза.

Функция 6 - прочитать файл с рамдиска.

Функция 7 - вывести изображение в окно.

Функция 8 - определить/удалить кнопку.

Функция 9 - информация о потоке выполнения.

Функция 10 - ожидать события.

Функция 11 - проверить, есть ли событие, без ожидания.

Функция 12 - начать/закончить перерисовку окна. Функция 13 - нарисовать прямоугольник в окне.

Функция 14 - получить размеры экрана.

Функция 15 - работа с фоновой графикой

Функция 16 - сохранить рамдиск на дискету.

Функция 17 - получить код нажатой кнопки.

Функция 18 - системные настройки и информация

Функция 20 - интерфейс MIDI.

Функция 21 - установка системных параметров

Функция 22 - установить системную дату/время.

Функция 23 - ожидать события с таймаутом.

Функция 24 - работа с проигрывателем компакт-дисков

Функция 25 - установить громкость SBPro. - Удалена

Функция 26 - аппаратный сервис

Функция 27 - сведения об этой функции отсутствуют

Функция 28 - установить громкость SB16. - Удалена

Функция 29 - получить системную дату.

Функция 30 - работа с текущей папкой.

Функция 31 - сведения об этой функции отсутствуют

Функция 32 - использовалась в ранних версиях КОС для удаления файла с рамдиска.- удалена

Функция 33 - использовалась в ранних версиях КОС для записи файла на рамдиск.-удалена

Функция 34 - сведения об этой функции отсутствуют

Функция 35 - прочитать цвет точки на экране.

Функция 36 - прочитать область экрана.

Функция 37 - работа с мышью.

Функция 38 - нарисовать отрезок.

Функция 39 - чтение фона.

Функция 40 - установить маску для ожидаемых событий.

Функция 41 - узнать владельца IRQ.

Функция 42 - работа с данными, полученными по IRQ.

Функция 43 - ввод/вывод в порт.

Функция 44 - определить действия при поступлении IRQ. Функция 45 - зарезервировать/освободить IRQ.

Функция 46 - зарезервировать/освободить группу портов ввода/вывода.

  • Внимание: Эта функция устарела и может быть удалена в следующих версиях ядра.

Функция 47 - вывести число в окно.

Функция 48 - стили отображения окон

Функция 49 - Advanced Power Management (APM).

Функция 50 - установка формы окна.

Функция 51 - создать поток.

Функция 52 - сетевой сервис. Функция 53 - работа с сетевым сокетами.

Функция 54 - Зарезервирована (пихает 0x12345678 в eax).

Функция 55 - аудио сервис.

  • Подфункция 0 - загрузить данные для SB16.
  • Подфункция 1 - начать проигрывать данные на SB16.
  • Подфункция 2 - установить формат данных SB16.
  • Подфункция 55 - начать проигрывать данные на встроенном спикере.

Функция 57 - PCI BIOS.

Функция 58 - работа с файловой системой.

  • Подфункция 0 - прочитать файл/папку.
  • Подфункция 8 - LBA-чтение с устройства.
  • Подфункция 15 - получить информацию о файловой системе.

Функция 60 - Inter Process Communication (IPC).

  • Подфункция 1 - установить область для получения IPC

Функция 61 - получить параметры для прямого доступа к графике.

Функция 62 - пользовательский доступ к PCI.

  • Подфункция 0 - получить версию PCI-интерфейса.
  • Подфункция 1 - получить номер последней PCI-шины.
  • Подфункция 2 - Получить механизм обращения к конфигурационному пространству PCI.
  • подфункции 4,5,6 - прочитать PCI-регистр.
  • подфункции 8,9,10 - записать в PCI-регистр.
  • подфункция 11 - инициализировать доступ к MMIO
  • подфункция 12 - получить линейный адрес MMIO-блока
  • подфункция 13 - освободить линейные адреса MMIO

Функция 63 - работа с доской отладки.

Функция 64 - перераспределить память приложения.

Функция 65 - вывести изображение с палитрой в окно.

Функция 66 - работа с клавиатурой.

  • Подфункция 1 - установить режим ввода с клавиатуры.
  • Подфункция 2 - получить режим ввода с клавиатуры.
  • Подфункция 3 - получить состояние управляющих клавиш.
  • Подфункция 4 - установить общесистемную "горячую клавишу".
  • Подфункция 5 - удалить установленную "горячую клавишу".

Функция 67 - изменить положение/размеры окна.

Функция 68 - внутренние системные службы

  • Подфункция 0 - получить счётчик переключений задач.
  • Подфункция 1 - переключиться на следующий поток выполнения.
  • Подфункция 2 - кэш + rdpmc.
  • Подфункция 3 - прочитать MSR-регистр.
  • Подфункция 4 - записать в MSR-регистр.
  • Подфункция 11 - инициализировать кучу процесса.
  • Подфункция 12 - выделить блок памяти.
  • Подфункция 13 - освободить блок памяти.
  • Подфункция 14 - ожидать извещения от драйвера.
  • Подфункция 15 - установить обработчик исключений FPU.
  • Подфункция 16 - загрузить драйвер.
  • Подфункция 17 - управление драйвером.
  • Подфункция 18 - установить обработчик исключений SSE.
  • Подфункция 19 - загрузить DLL.
  • Подфункция 20 - перераспределить блок памяти.
  • Подфункция 22 - открыть именованую область памяти.
  • Подфункция 23 - закрыть именованую область памяти.

Функция 69 - отладка.

  • Подфункция 0 - определить область данных для отладочных сообщений.
  • Подфункция 1 - получить состояние регистров отлаживаемого потока.
  • Подфункция 2 - установить состояние регистров отлаживаемого потока.
  • Подфункция 3 - отключиться от отлаживаемого процесса.
  • Подфункция 4 - приостановить поток.
  • Подфункция 5 - возобновить выполнение потока.
  • Подфункция 6 - прочитать из памяти отлаживаемого процесса.
  • Подфункция 7 - записать в память отлаживаемого процесса.
  • Подфункция 8 - завершить отлаживаемый поток.
  • Подфункция 9 - установить/снять аппаратную точку останова.

Функция 70 - работа с файловой системой с поддержкой длинных имён.

  • Подфункция 0 - чтение файла с поддержкой длинных имён.
  • Подфункция 1 - чтение папки с поддержкой длинных имён.
  • Подфункция 2 - создание/перезапись файла с поддержкой длинных имён.
  • Подфункция 3 - запись в существующий файл с поддержкой длинных имён.
  • Подфункция 4 - установка размера файла.
  • Подфункция 5 - получение информации о файле/папке.
  • Подфункция 6 - установка атрибутов файла/папки.
  • Подфункция 7 - запуск программы.
  • Подфункция 8 - удаление файла/папки.
  • Подфункция 9 - создание папки.

Описание функции перенесено в отдельную статью: Функция 71 - параметры окна

  • Подфункция 1 - установить заголовок окна программы.

Функция 72 - послать сообщение окну.

  • Подфункция 1 - послать сообщение с параметром активному окну.

Функция -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) (сбрасывается при считывании всех данных IRQ)

Коды ошибок файловой системы

  • 0 = успешно
  • 1 = не определена база и/или раздел жёсткого диска (подфункциями 7, 8 функции 21)
  • 2 = функция не поддерживается для данной файловой системы
  • 3 = неизвестная файловая система
  • 4 = зарезервировано, никогда не возвращается в текущей реализации
  • 5 = файл не найден
  • 6 = файл закончился
  • 7 = указатель вне памяти приложения
  • 8 = диск заполнен
  • 9 = таблица FAT разрушена
  • 10 = доступ запрещён
  • 11 = ошибка устройства

При запуске программы возможны также следующие коды ошибок:

  • 30 = 0x1E = недостаточно памяти
  • 31 = 0x1F = файл не является исполнимым
  • 32 = 0x20 = слишком много процессов