system/docs: revert some old tweaks, add some new
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 2m28s
Build system / Build (pull_request) Successful in 17m26s

This commit is contained in:
2026-01-02 14:33:50 +02:00
parent 8fb3bb76c6
commit 5ed012b0d9
2 changed files with 84 additions and 86 deletions

View File

@@ -2218,9 +2218,8 @@ dword-значение цвета 0x00RRGGBB
* Структура таблицы цветов описана в стандартном включаемом файле * Структура таблицы цветов описана в стандартном включаемом файле
macros.inc под названием system_colors; например, можно писать: macros.inc под названием system_colors; например, можно писать:
sc system_colors ; объявление переменной sc system_colors ; объявление переменной
... ; где-то надо вызвать ... ; вызов описываемой функции с ecx = sc
; описываемую функцию с ecx=sc mov ecx, [sc.work_button_text] ; устанавливаем цвет текста
mov ecx, [sc.work_button_text] ; читаем цвет текста
; на кнопке в рабочей области ; на кнопке в рабочей области
* Таблица может быть больше (до 192 байт); дополнительные поля * Таблица может быть больше (до 192 байт); дополнительные поля
копируются как есть и интерпретируются скинами. копируются как есть и интерпретируются скинами.
@@ -2493,6 +2492,7 @@ dword-значение цвета 0x00RRGGBB
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SET_WINDOW_SHAPE (50) eax - SF_SET_WINDOW_SHAPE (50)
====================================================================== ======================================================================
===================== Функция 51, подфункция 1 ======================= ===================== Функция 51, подфункция 1 =======================
========================== Создать поток ============================= ========================== Создать поток =============================
@@ -2510,6 +2510,7 @@ dword-значение цвета 0x00RRGGBB
eax - SF_CREATE_THREAD (51) / SF_THREAD_CONTROL (51) eax - SF_CREATE_THREAD (51) / SF_THREAD_CONTROL (51)
ebx - SSF_CREATE_THREAD (1), SSF_GET_CURR_THREAD_SLOT (2), ebx - SSF_CREATE_THREAD (1), SSF_GET_CURR_THREAD_SLOT (2),
SSF_GET_THREAD_PRIORITY (3), SSF_SET_THREAD_PRIORITY (4) SSF_GET_THREAD_PRIORITY (3), SSF_SET_THREAD_PRIORITY (4)
====================================================================== ======================================================================
===================== Функция 51, подфункция 2 ======================= ===================== Функция 51, подфункция 2 =======================
============= Получить номер слота текущего потока =================== ============= Получить номер слота текущего потока ===================
@@ -3360,19 +3361,21 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_MEM_FREE (13) ebx - SSF_MEM_FREE (13)
====================================================================== ======================================================================
====================== Функция 68, подфункция 14 ===================== ====================== Функция 68, подфункция 14 =====================
========== Получить событие ядра (обертка GetEvent). ========== ====== Ожидать получения сигнала от других приложений/драйверов. =====
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 68 - номер функции * eax = 68 - номер функции
* ebx = 14 - номер подфункции * ebx = 14 - номер подфункции
* ecx = указатель на буфер данных (6 dword = 24 байта) * ecx = указатель на буфер для информации (24 байта)
Возвращаемое значение: Возвращаемое значение:
* eax = дескриптор события * eax разрушается
* буфер, на который указывает ecx, содержит следующую информацию: * буфер, на который указывает ecx, содержит следующую информацию:
* +0: dword: EVENT.code (идентификатор последующих данных) * +0: dword: идентификатор последующих данных сигнала
* +4: 5 dword: EVENT.data, формат зависит от EVENT.code * +4: 5 dword: данные принятого сигнала, формат которых
определяется первым dword-ом
Замечания: Замечания:
* Бесконечно ожидает любое событие в очереди событий текущего потока. * Бесконечно ожидает любое событие в очереди событий текущего потока.
* Сбрасывает байт приоритета в буфере. * Сбрасывает байт приоритета в буфере.
@@ -3380,48 +3383,54 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_WAIT_SIGNAL (14) ebx - SSF_WAIT_SIGNAL (14)
====================================================================== ======================================================================
=========== Функция 68, подфункция 16 - получить сервис. =========== =========== Функция 68, подфункция 16 - загрузить драйвер. ===========
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 68 - номер функции * eax = 68 - номер функции
* ebx = 16 - номер подфункции * ebx = 16 - номер подфункции
* ecx = указатель на ASCIIZ-строку с именем сервиса * ecx = указатель на ASCIIZ-строку с именем драйвера
Возвращаемое значение: Возвращаемое значение:
* eax = указатель на структуру SRV, 0 при ошибке * eax = хэндл драйвера
0 при ошибке
Замечания: Замечания:
* Если сервис ещё не загружен, ядро пытается загрузить его из * Если драйвер ещё не загружен, он загружается;
/sys/drivers/<name>.sys. если драйвер уже загружен, ничего не меняется.
* Имя сервиса чувствительно к регистру символов. * Имя драйвера чувствительно к регистру символов.
Максимальная длина имени - 16 символов, включая завершающий Максимальная длина имени - 16 символов, включая завершающий
нулевой символ, остальные символы игнорируются. нулевой символ, остальные символы игнорируются.
* Драйвер с именем "ABC" загружается из файла /sys/drivers/ABC.sys.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_GET_SERVICE (16) / SSF_LOAD_DRIVER (16) ebx - SSF_LOAD_DRIVER (16) / SSF_GET_SERVICE (16)
====================================================================== ======================================================================
========== Функция 68, подфункция 17 - вызвать сервис. ========= ========== Функция 68, подфункция 17 - управление драйвером. =========
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 68 - номер функции * eax = 68 - номер функции
* ebx = 17 - номер подфункции * ebx = 17 - номер подфункции
* ecx = указатель на структуру IOCTL: * ecx = указатель на управляющую структуру:
* +0: dword: хэндл сервиса (указатель на SRV) * +0: dword: хэндл драйвера
* +4: dword: io_code * +4: dword: код функции драйвера
* +8: dword: указатель на входные данные * +8: dword: указатель на входные данные
* +12: dword: размер входных данных * +12 = +0x0C: dword: размер входных данных
* +16: dword: указатель на выходные данные * +16 = +0x10: dword: указатель на выходные данные
* +20: dword: размер выходных данных * +20 = +0x14: dword: размер выходных данных
Возвращаемое значение: Возвращаемое значение:
* eax = значение, возвращаемое обработчиком сервиса, -1 при ошибке * eax = определяется драйвером
-1 при ошибке
Замечания: Замечания:
* Коды функций и структура входных/выходных данных * Коды функций и структура входных/выходных данных
определяются сервисом. определяются драйвером.
* Хэндл сервиса можно получить подфункцией 16. * Хэндл драйвера необходимо предварительно получить подфункцией 16.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_CALL_SERVICE (17) / SSF_CONTROL_DRIVER (17) ebx - SSF_CONTROL_DRIVER (17) / SSF_CALL_SERVICE (17)
====================================================================== ======================================================================
== Функция 68, подфункция 18 - загрузить DLL с указанием кодировки. == == Функция 68, подфункция 18 - загрузить DLL с указанием кодировки. ==
====================================================================== ======================================================================
@@ -3678,7 +3687,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* функция загружает и, при необходимости, распаковывает файл (kunpack) * функция загружает и, при необходимости, распаковывает файл (kunpack)
====================================================================== ======================================================================
======== Функция 68, подфункция 29 - выделить кольцевую память. ========= ======= Функция 68, подфункция 29 - выделить кольцевую память. =======
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 68 - номер функции * eax = 68 - номер функции
@@ -4749,6 +4758,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74) eax - SF_NETWORK_GET (74) / SF_NETWORK_DEVICE (74)
bl - SSF_RX_PACKET_ERROR_COUNT (14) bl - SSF_RX_PACKET_ERROR_COUNT (14)
====================================================================== ======================================================================
== Функция 74.15, Получить число пакетов отброшенных при получении. == == Функция 74.15, Получить число пакетов отброшенных при получении. ==
====================================================================== ======================================================================
@@ -5074,9 +5084,10 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* ebx = 2 - номер подфункции * ebx = 2 - номер подфункции
* ecx = дескриптор фьютекса * ecx = дескриптор фьютекса
* edx = контрольное значение * edx = контрольное значение
* esi = таймаут в тиках системного таймера, 0 - ждать бесконечно * esi = таймаут в сотых секунды, 0 - ждать бесконечно
Возвращаемое значение: Возвращаемое значение:
* eax = 0 - успешно, -1 - таймаут, * eax = 0 - успешно,
-1 - таймаут,
-2 - контрольное значение не соответствует -2 - контрольное значение не соответствует
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
@@ -5118,24 +5129,25 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - 10 ebx - 10
====================================================================== ======================================================================
======== Функция 77, подфункция 11, Записать в pipe. ======= ======== Функция 77, подфункция 11, Записать из буфера в файл. =======
====================================================================== ======================================================================
Параметры: Параметры:
* eax = 77 - номер функции * eax = 77 - номер функции
* ebx = 11 - номер подфункции * ebx = 11 - номер подфункции
* ecx = дескриптор pipe * ecx = дескриптор файла
* edx = указатель на буфер, откуда брать данные для записи * edx = указатель на буфер, откуда брать данные для записи
* esi = сколько байт записать * esi = сколько байт записать
Возвращаемое значение: Возвращаемое значение:
* eax = количество записанных байт, -EBADF при ошибке, * eax = количество записанных байт
-EBADF при ошибке
-EPIPE если нет читателей -EPIPE если нет читателей
Замечания:
* Поддерживаются только pipe-дескрипторы.
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - 11 ebx - 11
====================================================================== ======================================================================
=========== Функция 77, подфункция 13, Создать новый pipe. =========== =========== Функция 77, подфункция 13, Создать новый pipe. ===========
====================================================================== ======================================================================
@@ -5156,6 +5168,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - 13 ebx - 13
====================================================================== ======================================================================
========== Функция -1 - завершить выполнение потока/процесса ========= ========== Функция -1 - завершить выполнение потока/процесса =========
====================================================================== ======================================================================
@@ -5173,6 +5186,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
---------------------- Константы для регистров: ---------------------- ---------------------- Константы для регистров: ----------------------
eax - SF_TERMINATE_PROCESS (-1) eax - SF_TERMINATE_PROCESS (-1)
====================================================================== ======================================================================
=== Функция 80 - работа с файловой системой с указанием кодировки. === === Функция 80 - работа с файловой системой с указанием кодировки. ===
====================================================================== ======================================================================

View File

@@ -2179,7 +2179,7 @@ Parameters:
* ecx = pointer to the buffer with size edx bytes, * ecx = pointer to the buffer with size edx bytes,
where table will be written where table will be written
* edx = size of color table * edx = size of color table
(up to 192 bytes; 40 bytes for base structure) (must be 40 bytes for future compatibility)
Returned value: Returned value:
* function does not return value * function does not return value
Format of the color table: Format of the color table:
@@ -2480,7 +2480,7 @@ Remarks:
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SET_WINDOW_SHAPE (50) eax - SF_SET_WINDOW_SHAPE (50)
====================================================================== ======================================================================
==================== Function 51 - create thread. ==================== ============= Function 51, subfunction 1 - create thread. ============
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 51 - function number * eax = 51 - function number
@@ -3334,14 +3334,14 @@ Remarks:
ebx - SSF_MEM_FREE (13) ebx - SSF_MEM_FREE (13)
====================================================================== ======================================================================
===================== Function 68, subfunction 14 ==================== ===================== Function 68, subfunction 14 ====================
================= Get kernel event (GetEvent wrapper). =============== ==== Wait for a signal from other applications/drivers. ==============
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 14 - subfunction number * ebx = 14 - subfunction number
* ecx = pointer to data buffer (6 dword = 24 bytes) * ecx = pointer to data buffer (6 dword = 24 bytes)
Returned value: Returned value:
* eax = event handle * eax is destroyed
* buffer pointed to by ecx contains the following information: * buffer pointed to by ecx contains the following information:
* +0: dword: EVENT.code (identifier of following data) * +0: dword: EVENT.code (identifier of following data)
* +4: 5 dword: EVENT.data, format depends on EVENT.code * +4: 5 dword: EVENT.data, format depends on EVENT.code
@@ -3353,43 +3353,44 @@ Remarks:
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_WAIT_SIGNAL (14) ebx - SSF_WAIT_SIGNAL (14)
====================================================================== ======================================================================
============= Function 68, subfunction 16 - get service. ============= =========== Function 68, subfunction 16 - load driver. ===============
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 16 - subfunction number * ebx = 16 - subfunction number
* ecx = pointer to ASCIIZ-string with service name * ecx = pointer to ASCIIZ-string with driver name
Returned value: Returned value:
* eax = pointer to SRV structure, 0 on error * eax = driver handle, 0 on error
Remarks: Remarks:
* If the service is not loaded yet, the kernel attempts to load it * If the driver is not loaded yet, it is loaded;
from /sys/drivers/<name>.sys. if the driver is already loaded, nothing changes.
* Service name is case-sensitive. * Driver name is case-sensitive.
Maximum length of the name is 16 characters, including Maximum length of the name is 16 characters, including
terminating null character, the rest is ignored. terminating null character, the rest is ignored.
* Driver with name "ABC" is loaded from /sys/drivers/ABC.sys.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
ebx - SSF_GET_SERVICE (16) / SSF_LOAD_DRIVER (16) ebx - SSF_GET_SERVICE (16) / SSF_LOAD_DRIVER (16)
====================================================================== ======================================================================
============ Function 68, subfunction 17 - call service. ============= ========== Function 68, subfunction 17 - control driver. =============
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 68 - function number * eax = 68 - function number
* ebx = 17 - subfunction number * ebx = 17 - subfunction number
* ecx = pointer to the IOCTL structure: * ecx = pointer to the control structure:
* +0: dword: service handle (pointer to SRV) * +0: dword: driver handle
* +4: dword: io_code * +4: dword: driver function code
* +8: dword: pointer to input data * +8: dword: pointer to input data
* +12: dword: size of input data * +12: dword: size of input data
* +16: dword: pointer to output data * +16: dword: pointer to output data
* +20: dword: size of output data * +20: dword: size of output data
Returned value: Returned value:
* eax = value returned by the service handler, -1 on error * eax = determined by driver, -1 on error
Remarks: Remarks:
* Function codes and the structure of input/output data * Function codes and the structure of input/output data
are defined by the service. are defined by the driver.
* The service handle can be obtained by subfunction 16. * Driver handle can be obtained by subfunction 16.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68) eax - SF_SYS_MISC (68)
@@ -3662,10 +3663,6 @@ Remarks:
write beyond the size of the allocated memory and will reach the write beyond the size of the allocated memory and will reach the
beginning of the buffer again. beginning of the buffer again.
---------------------- Constants for registers: ----------------------
eax - SF_SYS_MISC (68)
ebx - SSF_MEM_ALLOC_RING (29)
====================================================================== ======================================================================
=========== Function 68, subfunction 30 - unload driver. ============ =========== Function 68, subfunction 30 - unload driver. ============
====================================================================== ======================================================================
@@ -3898,7 +3895,7 @@ Remarks:
eax - SF_DEBUG (69) eax - SF_DEBUG (69)
ebx - SSF_RESUME (5) ebx - SSF_RESUME (5)
====================================================================== ======================================================================
= Fucntion 69, subfunction 6 - read from memory of debugged process. = == Function 69, subfunction 6 - read from memory of debugged process. ==
====================================================================== ======================================================================
Parameters: Parameters:
* eax = 69 - function number * eax = 69 - function number
@@ -5274,10 +5271,6 @@ Parameters:
* ecx = pointer to futex dword * ecx = pointer to futex dword
Returned value: Returned value:
* eax = futex handle, 0 on error * eax = futex handle, 0 on error
Remarks:
* Use subfunction 1 to destroy the futex.
The kernel destroys the futexes automatically when the process
terminates.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5292,7 +5285,8 @@ Parameters:
Returned value: Returned value:
* eax = 0 - successfull, -1 on error * eax = 0 - successfull, -1 on error
Remarks: Remarks:
* The futex handle must have been created by subfunction 0 * The kernel destroys the futexes automatically when the process
terminates.
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5305,16 +5299,11 @@ Parameters:
* ebx = 2 - subfunction number * ebx = 2 - subfunction number
* ecx = futex handle * ecx = futex handle
* edx = control value * edx = control value
* esi = timeout in system ticks or 0 for infinity * esi = timeout in hundredths of a second, 0 - wait forever
Returned value: Returned value:
* eax = 0 - successfull * eax = 0 - successfull
-1 - timeout -1 - timeout
-2 - futex dword does not have the same value as edx -2 - futex dword does not have the same value as edx
Remarks:
* This function tests that the value at the futex dword still
contains the expected control value, and if so, then sleeps
waiting for a wake operation on the futex.
* The futex handle must have been created by subfunction 0
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
@@ -5330,11 +5319,6 @@ Parameters:
Returned value: Returned value:
* eax = number of waiters that were woken up * eax = number of waiters that were woken up
Remarks:
* This function wakes at most edx of the waiters that are
waiting (e.g., inside futex wait) on the futex dword
* The futex handle must have been created by subfunction 0
---------------------- Constants for registers: ---------------------- ---------------------- Constants for registers: ----------------------
eax - SF_FUTEX (77) eax - SF_FUTEX (77)
ebx - SSF_WAKE (3) ebx - SSF_WAKE (3)