SysFn18/ru: Difference between revisions
Jump to navigation
Jump to search
Punk Joker (talk | contribs) |
Vitalkrilov (talk | contribs) m (обновление: "@panel" -> "@taskbar") |
||
(18 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 - получить информацию о дисковой подсистеме. === | ||
Line 194: | Line 235: | ||
:* Короткая таблица может быть использована для получения информации | :* Короткая таблица может быть использована для получения информации | ||
::об имеющихся устройствах. | ::об имеющихся устройствах. | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_INFO_DISC_SYS (11) | |||
=== Подфункция 13 - получить версию ядра. === | === Подфункция 13 - получить версию ядра. === | ||
Line 203: | Line 248: | ||
::информация | ::информация | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* функция не возвращает значения | :* функция не возвращает значения, | ||
::но, если указатель в ecx недопустимый, например, | |||
::регион [ecx, ecx + 9) пересекается с памятью ядра, | |||
::то тогда функция возвращает -1 | |||
Замечания: | |||
* В данный момент используется только часть буфера размером | |||
::9 байт. Тем не менее рекомендуется использовать буфер | |||
::размером 16 байт для будущей совместимости, в будущем могут быть | |||
::добавлены некоторые поля. | |||
Структура буфера: | Структура буфера: | ||
Line 214: | Line 267: | ||
db 0 | db 0 | ||
dd 1675 | dd 1675 | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_KERNEL_VERSION (13) | |||
=== Подфункция 14 - ожидать начала обратного хода луча развёртки монитора. === | === Подфункция 14 - ожидать начала обратного хода луча развёртки монитора. === | ||
Line 225: | Line 282: | ||
::высокопроизводительных графических приложений; используется для | ::высокопроизводительных графических приложений; используется для | ||
::плавного вывода графики. | ::плавного вывода графики. | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_WAIT_RETRACE (14) | |||
=== Подфункция 15 - поместить курсор мыши в центр экрана. === | === Подфункция 15 - поместить курсор мыши в центр экрана. === | ||
Line 233: | Line 294: | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* eax = 0 как признак успеха | :* eax = 0 как признак успеха | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_CURSOR_CENTER (15) | |||
=== Подфункция 16 - Получить размер свободной оперативной памяти. === | === Подфункция 16 - Получить размер свободной оперативной памяти. === | ||
Line 240: | Line 305: | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* eax = размер свободной памяти в килобайтах | :* eax = размер свободной памяти в килобайтах | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_GET_FREE_RAM (16) | |||
=== Подфункция 17 - получить размер имеющейся оперативной памяти. === | === Подфункция 17 - получить размер имеющейся оперативной памяти. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 17 - номер подфункции | :* ebx = 17 - номер подфункции | ||
Возвращаемое значение: | |||
:* eax = общий размер имеющейся памяти в килобайтах | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_GET_TOTAL_RAM (17) | |||
=== Подфункция 18 - завершить процесс/поток по идентификатору. === | === Подфункция 18 - завершить процесс/поток по идентификатору. === | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 18 - номер подфункции | :* ebx = 18 - номер подфункции | ||
* ecx = идентификатор процесса/потока (PID/TID) | :* ecx = идентификатор процесса/потока (PID/TID) | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0 - успешно | :* eax = 0 - успешно | ||
* eax = -1 - ошибка (процесс не найден или является системным) | :* eax = -1 - ошибка (процесс не найден или является системным) | ||
Замечания: | |||
:* Нельзя завершить поток операционной системы OS/IDLE (номер слота | |||
::1), можно завершить любой обычный поток/процесс. | |||
:* Смотри также подфункцию 2 - завершение | |||
::процесса/потока по заданному слоту. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM (18) | |||
::ebx - SSF_TERMINATE_THREAD_ID (18) | |||
=== Подфункция 19 - получить/установить настройки мыши. === | === Подфункция 19 - получить/установить настройки мыши. === | ||
Line 270: | Line 346: | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
* ecx = 0 - номер подподфункции | :* ecx = 0 - номер подподфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = | :* eax = текущий делитель скорости | ||
==== Подподфункция 1 - установить скорость мыши. ==== | ==== Подподфункция 1 - установить скорость мыши. ==== | ||
Параметры: | Параметры: | ||
* eax = 18 - номер функции | :* eax = 18 - номер функции | ||
* ebx = 19 - номер подфункции | :* ebx = 19 - номер подфункции | ||
* ecx = 1 - номер подподфункции | :* ecx = 1 - номер подподфункции | ||
* edx = новое значение скорости | :* edx = новое значение делителя скорости | ||
Возвращаемое значение: | |||
:* функция не возвращает значения | |||