SysFn18/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
m (обновление: "@panel" -> "@taskbar")
 
(24 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 - свернуть окно приложения. ===
Line 133: Line 170:
::минимизации (которая для окон со скином определяется автоматически
::минимизации (которая для окон со скином определяется автоматически
::функцией 0, для окон без скина её можно определить функцией 8),
::функцией 0, для окон без скина её можно определить функцией 8),
::восстановление - приложением @panel.
::восстановление - приложением @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 - номер функции
:* eax = 18 - номер функции
Line 193: Line 235:
:* Короткая таблица может быть использована для получения информации
:* Короткая таблица может быть использована для получения информации
::об имеющихся устройствах.
::об имеющихся устройствах.
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_INFO_DISC_SYS (11)


=== Подфункция 13 - получить версию ядра. ===
=== Подфункция 13 - получить версию ядра. ===


Параметры:
Параметры:
* eax = 18 - номер функции
:* eax = 18 - номер функции
* ebx = 13 - номер подфункции
:* ebx = 13 - номер подфункции
* ecx = указатель на буфер (не менее 16 байт), куда будет помещена информация
:* ecx = указатель на буфер (не менее 16 байт), куда будет помещена
 
::информация
Возвращаемое значение:
Возвращаемое значение:
* функция не возвращает значения
:* функция не возвращает значения,
::но, если указатель в ecx недопустимый, например,
::регион [ecx, ecx + 9) пересекается с памятью ядра,
::то тогда функция возвращает -1
Замечания:
* В данный момент используется только часть буфера размером
::9 байт. Тем не менее рекомендуется использовать буфер
::размером 16 байт для будущей совместимости, в будущем могут быть
::добавлены некоторые поля.


Структура буфера:
Структура буфера:
Line 213: Line 267:
  db 0
  db 0
  dd 1675
  dd 1675
'''Константы для регистров:'''
::eax - SF_SYSTEM (18)
::ebx - SSF_KERNEL_VERSION (13)


=== Подфункция 14 - ожидать начала обратного хода луча развёртки монитора. ===
=== Подфункция 14 - ожидать начала обратного хода луча развёртки монитора. ===
Параметры:
Параметры:
* eax = 18 - номер функции
:* eax = 18 - номер функции
* ebx = 14 - номер подфункции
:* ebx = 14 - номер подфункции
 
Возвращаемое значение:
Возвращаемое значение:
* eax = 0 как признак успеха
:* eax = 0 как признак успеха
Замечания:
:* Функция предназначена исключительно для активных
::высокопроизводительных графических приложений; используется для
::плавного вывода графики.


Замечания:
'''Константы для регистров:'''
* Функция предназначена исключительно для активных высокопроизводительных графических приложений; используется для плавного вывода графики.
::eax - SF_SYSTEM (18)
::ebx - SSF_WAIT_RETRACE (14)


=== Подфункция 15 - поместить курсор мыши в центр экрана. ===
=== Подфункция 15 - поместить курсор мыши в центр экрана. ===


Параметры:
Параметры:
* eax = 18 - номер функции
:* eax = 18 - номер функции
* ebx = 15 - номер подфункции
:* ebx = 15 - номер подфункции
Возвращаемое значение:
:* eax = 0 как признак успеха


Возвращаемое значение:
'''Константы для регистров:'''
* eax = 0 как признак успеха
::eax - SF_SYSTEM (18)
::ebx - SSF_CURSOR_CENTER (15)


=== Подфункция 16 - Получить размер свободной оперативной памяти. ===
=== Подфункция 16 - Получить размер свободной оперативной памяти. ===
Параметры:
Параметры:
* eax = 18 - номер функции
:* eax = 18 - номер функции
* ebx = 16 - номер подфункции
:* ebx = 16 - номер подфункции
Возвращаемое значение:
:* eax = размер свободной памяти в килобайтах


Возвращаемое значение:
'''Константы для регистров:'''
* eax = размер свободной памяти в килобайтах
::eax - SF_SYSTEM (18)
::ebx - SSF_GET_FREE_RAM (16)


=== Подфункция 17 - получить размер имеющейся оперативной памяти. ===
=== Подфункция 17 - получить размер имеющейся оперативной памяти. ===


Параметры:
Параметры:
* eax = 18 - номер функции
:* eax = 18 - номер функции
* ebx = 17 - номер подфункции
:* ebx = 17 - номер подфункции
Возвращаемое значение:
:* eax = общий размер имеющейся памяти в килобайтах


Возвращаемое значение:
'''Константы для регистров:'''
* 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 - завершение
::процесса/пот