SysFn18/ru: Difference between revisions
Jump to navigation
Jump to search
Punk Joker (talk | contribs) |
Vitalkrilov (talk | contribs) m (обновление: "@panel" -> "@taskbar") |
||
(25 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: | ||
:* функция не возвращает значения | :* функция не возвращает значения | ||
=== | '''Константы для регистров:''' | ||
::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 - свернуть окно приложения. === | ||
Line 133: | Line 170: | ||
::минимизации (которая для окон со скином определяется автоматически | ::минимизации (которая для окон со скином определяется автоматически | ||
::функцией 0, для окон без скина её можно определить функцией 8), | ::функцией 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 = указатель на буфер (в приложении) для таблицы | |||
Возвращаемое значение: | |||
:* функция не возвращает значения | |||
Формат таблицы: короткая версия: | |||
:* +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 - получить версию ядра. === | === Подфункция 13 - получить версию ядра. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* |