SysFn18/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
m (обновление: "@panel" -> "@taskbar")
 
(26 intermediate revisions by 4 users not shown)
Line 10: Line 10:
* ecx = номер слота процесса/потока
* ecx = номер слота процесса/потока
Возвращаемое значение:
Возвращаемое значение:
* функция не возвращает значения  
* функция не возвращает значения
 
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_UNFOCUS_WINDOW (1)


=== Подфункция 2 - завершить процесс/поток по слоту. ===
=== Подфункция 2 - завершить процесс/поток по слоту. ===
Line 23: Line 27:
* Нельзя завершить поток операционной системы OS/IDLE (номер слота 1), можно завершить любой обычный поток/процесс.
* Нельзя завершить поток операционной системы OS/IDLE (номер слота 1), можно завершить любой обычный поток/процесс.
* Смотри также подфункцию 18 - завершение процесса/потока с заданным идентификатором.
* Смотри также подфункцию 18 - завершение процесса/потока с заданным идентификатором.
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_TERMINATE_THREAD (2)


=== Подфункция 3 - сделать активным окно заданного потока. ===
=== Подфункция 3 - сделать активным окно заданного потока. ===
Line 35: Line 43:
* При указании корректного, но несуществующего слота активизируется какое-то окно.
* При указании корректного, но несуществующего слота активизируется какое-то окно.
* Узнать, какое окно является активным, можно вызовом подфункции 7.
* Узнать, какое окно является активным, можно вызовом подфункции 7.
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_FOCUS_WINDOW (3)


=== Подфункция 4 - получить счётчик пустых тактов в секунду. ===
=== Подфункция 4 - получить счётчик пустых тактов в секунду. ===
Line 45: Line 57:
Возвращаемое значение:
Возвращаемое значение:
* eax = значение счётчика пустых тактов в секунду
* eax = значение счётчика пустых тактов в секунду
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_GET_IDLE_COUNT (4)


=== Подфункция 5 - получить тактовую частоту. ===
=== Подфункция 5 - получить тактовую частоту. ===
Line 53: Line 69:
Возвращаемое значение:
Возвращаемое значение:
* eax = тактовая частота (по модулю 2^32 тактов = 4ГГц)
* eax = тактовая частота (по модулю 2^32 тактов = 4ГГц)
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_GET_CPU_REQUENCY (5)


=== Подфункция 6 - сохранить рамдиск в файл на жёстком диске. ===
=== Подфункция 6 - сохранить рамдиск в файл на жёстком диске. ===
Line 65: Line 85:
Замечания:
Замечания:
* Все папки в указанном пути должны существовать, иначе вернётся значение 5, "файл не найден".
* Все папки в указанном пути должны существовать, иначе вернётся значение 5, "файл не найден".
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_RD_TO_HDD (6)


=== Подфункция 7 - получить номер активного окна. ===
=== Подфункция 7 - получить номер активного окна. ===
Line 77: Line 101:
::сообщения обо всём вводе с клавиатуры.
::сообщения обо всём вводе с клавиатуры.
:* Сделать окно активным можно вызовом подфункции 3.
:* Сделать окно активным можно вызовом подфункции 3.
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_GET_ACTIVE_WINDOW (7)


=== Подфункция 8 - отключить/разрешить звук спикера. ===
=== Подфункция 8 - отключить/разрешить звук спикера. ===
Line 83: Line 111:
При включённом - направляются на встроенный спикер.
При включённом - направляются на встроенный спикер.


=== Подподфункция 1 - получить состояние. ===
==== Подподфункция 1 - получить состояние. ====
Параметры:
Параметры:
:* eax = 18 - номер функции
:* eax = 18 - номер функции
Line 91: Line 119:
:* eax = 0 - звук спикера разрешён; 1 - запрещён
:* eax = 0 - звук спикера разрешён; 1 - запрещён


=== Подподфункция 2 - переключить состояние. ===
==== Подподфункция 2 - переключить состояние. ====
Переключает состояния разрешения/запрещения.
Переключает состояния разрешения/запрещения.
Параметры:
Параметры:
Line 100: Line 128:
:* функция не возвращает значения
:* функция не возвращает значения


=== Функция 18, подфункция 9 - завершение работы системы с параметром.  ===
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_SPEAKER (8)
::ecx - SSSF_GET_STATE (1), SSSF_TOGGLE (2)
 
=== Подфункция 9 - завершение работы системы с параметром.  ===


Параметры:
Параметры:
Line 115: Line 148:
:* Не следует полагаться на возвращаемое значение при неверном
:* Не следует полагаться на возвращаемое значение при неверном
::вызове, оно может измениться в последующих версиях ядра.
::вызове, оно может измениться в последующих версиях ядра.
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_SHUTDOWN (9)


=== Подфункция 10 - свернуть окно приложения. ===
=== Подфункция 10 - свернуть окно приложения. ===


Сворачивает собственное окно.
Сворачивает собственное окно.
Параметры:
Параметры:
* eax = 18 - номер функции
:* eax = 18 - номер функции
* ebx = 10 - номер подфункции
:* ebx = 10 - номер подфункции
Возвращаемое значение:
Возвращаемое значение:
* функция не возвращает значения
:* функция не возвращает значения
Замечания:
Замечания:
* Минимизированное окно с точки зрения функции 9 сохраняет положение и размеры.
:* Минимизированное окно с точки зрения функции 9 сохраняет положение
* Восстановление окна приложения происходит при активизировании подфункцией 3.
::и размеры.
* Обычно нет необходимости явно сворачивать/разворачивать своё окно: сворачивание окна осуществляется системой при нажатии на кнопку минимизации (которая для окон со скином определяется автоматически   функцией 0, для окон без скина её можно определить функцией 8), восстановление - приложением @panel.
:* Восстановление окна приложения происходит при активизировании
::подфункцией 3.
:* Обычно нет необходимости явно сворачивать/разворачивать своё окно:
::сворачивание окна осуществляется системой при нажатии на кнопку
::минимизации (которая для окон со скином определяется автоматически
::функцией 0, для окон без скина её можно определить функцией 8),
::восстановление - приложением @taskbar.
 
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_MINIMIZE_WINDOW (10)


=== Подфункция 11 - получить информацию о дисковой подсистеме. ===
=== Подфункция 11 - получить информацию о дисковой подсистеме. ===
<big>'''Внимание:''' Эта подфункция будет [http://board.kolibrios.org/viewtopic.php?f=35&t=1854 удалена] в следующих версиях системы</big>
<big>'''Внимание:''' Эта подфункция будет [http://board.kolibrios.org/viewtopic.php?f=35&t=1854 удалена] в следующих версиях системы</big>
Параметры:
* eax = 18 - номер функции
* ebx = 11 - номер подфункции
* ecx = тип таблицы:
** 1 = короткая версия, 10 байт
** 2 = полная версия, 65536 байт
* edx = указатель на буфер (в приложении) для таблицы


Возвращаемое значение:
Параметры:
* функция не возвращает значения
:* 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
:* формат дальнейших данных зависит от файловой системы,
::может меняться с изменениями в ядре и поэтому не описывается
Замечания:
:* Короткая таблица может быть использована для получения информации
::об имеющихся устройствах.


Формат таблицы: '''короткая версия''':
'''Константы для регистров:'''
* +0: byte: информация о НГМД (дисководах для дискет), AAAABBBB, где AAAA задаёт тип первого дисковода, BBBB - второго согласно следующему списку:
::eax - SF_SYSTEM (18)
** 0 = нет дисковода
::ebx - SSF_INFO_DISC_SYS (11)
** 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: данные для второго раздела<