SysFn18/ru: Difference between revisions
No edit summary |
Vitalkrilov (talk | contribs) m (обновление: "@panel" -> "@taskbar") |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 170: | Line 170: | ||
::минимизации (которая для окон со скином определяется автоматически | ::минимизации (которая для окон со скином определяется автоматически | ||
::функцией 0, для окон без скина её можно определить функцией 8), | ::функцией 0, для окон без скина её можно определить функцией 8), | ||
::восстановление - приложением @ | ::восстановление - приложением @taskbar. | ||
'''Константы для регистров:''' | '''Константы для регистров:''' | ||
Line 248: | Line 248: | ||
::информация | ::информация | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* функция не возвращает значения | :* функция не возвращает значения, | ||
::но, если указатель в ecx недопустимый, например, | |||
::регион [ecx, ecx + 9) пересекается с памятью ядра, | |||
::то тогда функция возвращает -1 | |||
Замечания: | |||
* В данный момент используется только часть буфера размером | |||
::9 байт. Тем не менее рекомендуется использовать буфер | |||
::размером 16 байт для будущей совместимости, в будущем могут быть | |||
::добавлены некоторые поля. | |||
Структура буфера: | Структура буфера: | ||
Line 342: | Line 350: | ||
:* ecx = 0 - номер подподфункции | :* ecx = 0 - номер подподфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* eax = | :* eax = текущий делитель скорости | ||
==== Подподфункция 1 - установить скорость мыши. ==== | ==== Подподфункция 1 - установить скорость мыши. ==== | ||
Line 349: | Line 357: | ||
:* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
:* ecx = 1 - номер подподфункции | :* ecx = 1 - номер подподфункции | ||
:* edx = новое значение скорости | :* edx = новое значение делителя скорости | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* функция не возвращает значения | :* функция не возвращает значения | ||
==== Подподфункция 2 - получить | Замечание: рекомендуемый делитель скорости = 4 | ||
==== Подподфункция 2 - получить чувствительность мыши. ==== | |||
Параметры: | Параметры: | ||
Line 360: | Line 370: | ||
:* ecx = 2 - номер подподфункции | :* ecx = 2 - номер подподфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* eax = | :* eax = текущий коэффициент чувствительности | ||
==== Подподфункция 3 - установить | ==== Подподфункция 3 - установить чувствительность мыши. ==== | ||
Параметры: | Параметры: | ||
Line 368: | Line 378: | ||
:* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
:* ecx = 3 - номер подподфункции | :* ecx = 3 - номер подподфункции | ||
:* edx = новое значение | :* edx = новое значение коэффициента чувствительности | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* функция не возвращает значения | :* функция не возвращает значения | ||
Замечание: рекомендуемый коэффициент чувствительности = 3 | |||
==== Подподфункция 4 - установить положение курсора мыши. ==== | ==== Подподфункция 4 - установить положение курсора мыши. ==== | ||
Line 405: | Line 417: | ||
:* ecx = 6 - номер подподфункции | :* ecx = 6 - номер подподфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* eax = текущая задержка двойного щелчка ( | :* eax = текущая задержка двойного щелчка (в сотых секунды) | ||
==== Подподфункция 7 - установить задержку двойного щелчка. ==== | ==== Подподфункция 7 - установить задержку двойного щелчка. ==== | ||
Line 413: | Line 425: | ||
:* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
:* ecx = 7 - номер подподфункции | :* ecx = 7 - номер подподфункции | ||
:* dl = новое значение задержки двойного щелчка ( | :* dl = новое значение задержки двойного щелчка (в сотых секунды) | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* функция не возвращает значения | :* функция не возвращает значения | ||
'''Константы для регистров:''' | '''Константы для регистров:''' |
Latest revision as of 15:27, 12 January 2022
Функция 18 -
Подфункция 1 - сделать неактивным окно потока
Введена в ревизии 2244
Параметры:
- eax = 18 - номер функции
- ebx = 1 - номер подфункции
- ecx = номер слота процесса/потока
Возвращаемое значение:
- функция не возвращает значения
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_UNFOCUS_WINDOW (1)
Подфункция 2 - завершить процесс/поток по слоту.
Параметры:
- eax = 18 - номер функции
- ebx = 2 - номер подфункции
- ecx = номер слота процесса/потока
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- Нельзя завершить поток операционной системы OS/IDLE (номер слота 1), можно завершить любой обычный поток/процесс.
- Смотри также подфункцию 18 - завершение процесса/потока с заданным идентификатором.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_TERMINATE_THREAD (2)
Подфункция 3 - сделать активным окно заданного потока.
Параметры:
- eax = 18 - номер функции
- ebx = 3 - номер подфункции
- ecx = номер слота потока
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- При указании корректного, но несуществующего слота активизируется какое-то окно.
- Узнать, какое окно является активным, можно вызовом подфункции 7.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_FOCUS_WINDOW (3)
Подфункция 4 - получить счётчик пустых тактов в секунду.
Под пустыми тактами понимается время, в которое процессор простаивает в ожидании прерывания (в инструкции hlt).
Параметры:
- eax = 18 - номер функции
- ebx = 4 - номер подфункции
Возвращаемое значение:
- eax = значение счётчика пустых тактов в секунду
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_GET_IDLE_COUNT (4)
Подфункция 5 - получить тактовую частоту.
Параметры:
- eax = 18 - номер функции
- ebx = 5 - номер подфункции
Возвращаемое значение:
- eax = тактовая частота (по модулю 2^32 тактов = 4ГГц)
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_GET_CPU_REQUENCY (5)
Подфункция 6 - сохранить рамдиск в файл на жёстком диске.
Параметры:
- eax = 18 - номер функции
- ebx = 6 - номер подфункции
- ecx = указатель на строку с полным именем файла (например, "/hd0/1/kolibri/kolibri.img")
Возвращаемое значение:
- eax = 0 - успешно
- иначе eax = код ошибки файловой системы
Замечания:
- Все папки в указанном пути должны существовать, иначе вернётся значение 5, "файл не найден".
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_RD_TO_HDD (6)
Подфункция 7 - получить номер активного окна.
Параметры:
- eax = 18 - номер функции
- ebx = 7 - номер подфункции
Возвращаемое значение:
- eax = номер активного окна (номер слота потока, окно которого
- активно)
Замечания:
- Активное окно находится вверху оконного стэка и получает
- сообщения обо всём вводе с клавиатуры.
- Сделать окно активным можно вызовом подфункции 3.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_GET_ACTIVE_WINDOW (7)
Подфункция 8 - отключить/разрешить звук спикера.
При отключённом звуке вызовы подфункции 55 функции 55 игнорируются. При включённом - направляются на встроенный спикер.
Подподфункция 1 - получить состояние.
Параметры:
- eax = 18 - номер функции
- ebx = 8 - номер подфункции
- ecx = 1 - номер подподфункции
Возвращаемое значение:
- eax = 0 - звук спикера разрешён; 1 - запрещён
Подподфункция 2 - переключить состояние.
Переключает состояния разрешения/запрещения. Параметры:
- eax = 18 - номер функции
- ebx = 8 - номер подфункции
- ecx = 2 - номер подподфункции
Возвращаемое значение:
- функция не возвращает значения
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_SPEAKER (8)
- ecx - SSSF_GET_STATE (1), SSSF_TOGGLE (2)
Подфункция 9 - завершение работы системы с параметром.
Параметры:
- eax = 18 - номер функции
- ebx = 9 - номер подфункции
- ecx = параметр:
- 2 = выключить компьютер
- 3 = перезагрузить компьютер
- 4 = перезапустить ядро из файла kernel.mnt на рамдиске
Возвращаемое значение:
- при неверном ecx регистры не меняются (т.е. eax=18)
- при правильном вызове всегда возвращается признак успеха eax=0
Замечания:
- Не следует полагаться на возвращаемое значение при неверном
- вызове, оно может измениться в последующих версиях ядра.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_SHUTDOWN (9)
Подфункция 10 - свернуть окно приложения.
Сворачивает собственное окно. Параметры:
- eax = 18 - номер функции
- ebx = 10 - номер подфункции
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- Минимизированное окно с точки зрения функции 9 сохраняет положение
- и размеры.
- Восстановление окна приложения происходит при активизировании
- подфункцией 3.
- Обычно нет необходимости явно сворачивать/разворачивать своё окно:
- сворачивание окна осуществляется системой при нажатии на кнопку
- минимизации (которая для окон со скином определяется автоматически
- функцией 0, для окон без скина её можно определить функцией 8),
- восстановление - приложением @taskbar.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_MINIMIZE_WINDOW (10)
Подфункция 11 - получить информацию о дисковой подсистеме.
Внимание: Эта подфункция будет удалена в следующих версиях системы
Параметры:
- eax = 18 - номер функции
- ebx = 11 - номер подфункции
- ecx = тип таблицы:
- 1 = короткая версия, 10 байт
- 2 = полная версия, 65536 байт
- edx = указатель на буфер (в приложении) для таблицы
Возвращаемое значение:
- функция не возвращает значения
Формат таблицы: короткая версия:
- +0: byte: информация о НГМД (дисководах для дискет), AAAABBBB,
- где AAAA задаёт тип первого дисковода, BBBB - второго согласно
- следующему списку:
- 0 = нет дисковода
- 1 = 360Kb, 5.25
- 2 = 1.2Mb, 5.25
- 3 = 720Kb, 3.5
- 4 = 1.44Mb, 3.5
- 5 = 2.88Mb, 3.5 (такие дискеты сейчас уже не используются)
- Например, для стандартной конфигурации из одного 1.44-дисковода
- здесь будет 40h, а для случая 1.2Mb на A: и 1.44Mb на B:
- значение оказывается 24h.
- +1: byte: информация о жёстких дисках и CD-приводах, AABBCCDD,
- где AA соответствует контроллеру IDE0, ..., DD - IDE3:
- 0 = устройство отсутствует
- 1 = жёсткий диск
- 2 = CD-привод
- Например, в случае HD на IDE0 и CD на IDE2 здесь будет 48h.
- +2: 4 db: число найденных разделов на жёстких дисках с
- соответственно IDE0,...,IDE3.
- При отсутствии жёсткого диска на IDEx соответствующий байт
- нулевой, при наличии показывает число распознанных разделов,
- которых может и не быть (если носитель не отформатирован или
- если файловая система не поддерживается). В текущей версии ядра
- для жёстких дисков поддерживаются только FAT16, FAT32 и NTFS.
- +6: 4 db: зарезервировано
Формат таблицы: полная версия:
- +0: 10 db: такие же, как и в короткой версии
- +10: 100 db: данные для первого раздела
- +110: 100 db: данные для второго раздела
- ...
- +10+100*(n-1): 100 db: данные для последнего раздела
Разделы расположены в следующем порядке: сначала последовательно все распознанные разделы на HD на IDE0 (если есть), затем на HD на IDE1 (если есть) и т.д. до IDE3. Формат информации о разделе:
- +0: dword: начальный физический сектор раздела
- +4: dword: последний физический сектор раздела
- (принадлежит разделу)
- +8: byte: тип файловой системы:
- 16=FAT16, 32=FAT32, 1=NTFS
- формат дальнейших данных зависит от файловой системы,
- может меняться с изменениями в ядре и поэтому не описывается
Замечания:
- Короткая таблица может быть использована для получения информации
- об имеющихся устройствах.
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_INFO_DISC_SYS (11)
Подфункция 13 - получить версию ядра.
Параметры:
- eax = 18 - номер функции
- ebx = 13 - номер подфункции
- ecx = указатель на буфер (не менее 16 байт), куда будет помещена
- информация
Возвращаемое значение:
- функция не возвращает значения,
- но, если указатель в ecx недопустимый, например,
- регион [ecx, ecx + 9) пересекается с памятью ядра,
- то тогда функция возвращает -1
Замечания:
- В данный момент используется только часть буфера размером
- 9 байт. Тем не менее рекомендуется использовать буфер
- размером 16 байт для будущей совместимости, в будущем могут быть
- добавлены некоторые поля.
Структура буфера:
db a,b,c,d для версии a.b.c.d db 0: зарезервировано dd REV - номер svn-ревизии ядра
Для ядра Kolibri 0.7.7.0+:
db 0,7,7,0 db 0 dd 1675
Константы для регистров:
- eax - SF_SYSTEM (18)
- ebx - SSF_KERNEL_VERSION (13)
Подфункция 14 - ожидать начала обратного хода луча развёртки монитора.
Параметры:
- eax = 18 - номер функции
- ebx = 14 - номер подфункции
Возвращаемое значение:
- eax = 0 как признак успеха
Замечания:
- Функция предназначена исключительно для активных
- высокопроизводи