SysFn26/ru: Difference between revisions
Jump to navigation
Jump to search
(Created page with ''''Функция 26''' - аппаратный сервис ---- === Подфункция 1 - получить базовый порт MPU MIDI. === Параметры: * eax ...') |
Vitalkrilov (talk | contribs) m ((пропустил "@panel")) |
||
(13 intermediate revisions by 5 users not shown) | |||
Line 4: | Line 4: | ||
=== Подфункция 1 - получить базовый порт MPU MIDI. === | === Подфункция 1 - получить базовый порт MPU MIDI. === | ||
Параметры: | Параметры: | ||
* eax = 26 - номер функции | :* eax = 26 - номер функции | ||
* ebx = 1 - номер подфункции | :* ebx = 1 - номер подфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = номер порта | :* eax = номер порта | ||
Замечания: | Замечания: | ||
* Установить базовый порт можно вызовом подфункции 1 функции 21. | :* Установить базовый порт можно вызовом | ||
::подфункции 1 функции 21. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM_GET (26) | |||
::ebx - SSF_MPU_MIDI_BASE (1) | |||
=== Подфункция 2 - получить раскладку клавиатуры. === | === Подфункция 2 - получить раскладку клавиатуры. === | ||
Line 19: | Line 22: | ||
поступающих от клавиатуры, в ASCII-коды, считываемые функцией 2. | поступающих от клавиатуры, в ASCII-коды, считываемые функцией 2. | ||
Параметры: | Параметры: | ||
* eax = 26 - номер функции | :* eax = 26 - номер функции | ||
* ebx = 2 - номер подфункции | :* ebx = 2 - номер подфункции | ||
* ecx = какую раскладку получать: | :* ecx = какую раскладку получать: | ||
::* 1 = нормальную | |||
::* 2 = раскладку при нажатом Shift | |||
::* 3 = раскладку при нажатом Alt | |||
* edx = указатель на буфер длиной 128 байт, куда будет скопирована раскладка | :* edx = указатель на буфер длиной 128 байт, куда будет скопирована | ||
::раскладка | |||
Возвращаемое значение: | Возвращаемое значение: | ||
* функция не возвращает значения | :* функция не возвращает значения | ||
::но, если указатель в edx недопустимый, например, | |||
::регион [edx, edx + 128) пересекается с памятью ядра, | |||
::то тогда функция возвращает -1 | |||
Или: | Или: | ||
* eax = 26 - номер функции | :* eax = 26 - номер функции | ||
* ebx = 2 - номер подфункции | :* ebx = 2 - номер подфункции | ||
* ecx = 9 | :* ecx = 9 | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = идентификатор страны (1=eng, 2=fi, 3=ger, 4=rus) | :* eax = идентификатор страны (1=eng, 2=fi, 3=ger, 4=rus) | ||
Замечания: | Замечания: | ||
* Если нажат Alt, то используется раскладка с Alt; если не нажат Alt, но нажат Shift, то используется раскладка с Shift; если не нажаты Alt и Shift, но нажат Ctrl, то используется нормальная раскладка, после чего из кода вычитается 0x60; если не нажата ни одна из управляющих клавиш, то используется нормальная раскладка. | :* Если нажат Alt, то используется раскладка с Alt; | ||
* Установить раскладки и идентификатор страны можно с помощью подфункции 2 функции 21. | ::если не нажат Alt, но нажат Shift, то используется | ||
* Идентификатор страны - глобальная системная переменная, которая самим ядром не используется; однако приложение @ | ::раскладка с Shift; | ||
* Приложение @ | ::если не нажаты Alt и Shift, но нажат Ctrl, то используется | ||
::нормальная раскладка, после чего из кода вычитается 0x60; | |||
::если не нажата ни одна из управляющих клавиш, то используется | |||
::нормальная раскладка. | |||
:* Установить раскладки и идентификатор страны можно с помощью | |||
::подфункции 2 функции 21. | |||
:* Идентификатор страны - глобальная системная переменная, которая | |||
::самим ядром не используется; однако приложение @taskbar отображает | |||
::соответствующую текущей стране иконку | |||
::(используя описываемую функцию). | |||
:* Приложение @taskbar переключает раскладки по запросу пользователя. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM_GET (26) | |||
::ebx - SSF_KEYBOARD_LAYOUT (2) | |||
=== Подфункция 5 - получить язык системы. === | === Подфункция 5 - получить язык системы. === | ||
* eax = 26 - номер функции | Параметры: | ||
* ebx = 5 - номер подфункции | :* eax = 26 - номер функции | ||
:* ebx = 5 - номер подфункции | |||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = язык системы (1=eng, 2=fi, 3=ger, 4=rus) | :* eax = язык системы (1=eng, 2=fi, 3=ger, 4=rus) | ||
Замечания: | Замечания: | ||
* Язык системы - глобальная системная переменная, никак не используемая самим ядром, однако приложение @ | :* Язык системы - глобальная системная переменная, никак | ||
* Установить язык системы можно вызовом подфункции 5 функции 21. | ::не используемая самим ядром, однако приложение @taskbar рисует | ||
::соответствующую иконку (используя описываемую функцию). | |||
:* Установить язык системы можно вызовом подфункции 5 функции 21. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM_GET (26) | |||
::ebx - SSF_SYS_LANG (5) | |||
=== Подфункция 9 - получить значение счётчика времени. === | |||
Параметры: | Параметры: | ||
* eax = 26 - номер функции | :* eax = 26 - номер функции | ||
* ebx = | :* ebx = 9 - номер подфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = | :* eax = число сотых долей секунды, прошедших с момента | ||
::запуска системы | |||
Замечания: | Замечания: | ||
* | :* Счётчик берётся по модулю 2^32, что соответствует немногим более | ||
::497 суток. | |||
* | :* Системное время можно получить функцией 3. | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM_GET (26) | |||
::ebx - SSF_TIME_COUNT (9) | |||
=== Подфункция 10 - получить значение высокоточного счётчика времени. === | |||
Параметры: | Параметры: | ||
* eax = 26 - номер функции | :* eax = 26 - номер функции | ||
* ebx = | :* ebx = 10 - номер подфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = | :* edx:eax = число наносекунд с момента загрузки ядра | ||
:* eax = младшее двойное слово | |||
* | :* edx = старшее двойное слово | ||
* | Замечание: | ||
:* функция использует счётчик HPET, если HPET не доступен используется | |||
::счётчик PIT. В этом случае точность будет уменьшена до 10 000 000 | |||
::наносекунд. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM_GET (26) | |||
::ebx - SSF_TIME_COUNT_PRO (10) | |||
=== Подфункция 11 - узнать, разрешён ли низкоуровневый доступ к HD. === | === Подфункция 11 - узнать, разрешён ли низкоуровневый доступ к HD. === | ||
Параметры: | Параметры: | ||
* eax = 26 - номер функции | :* eax = 26 - номер функции | ||
* ebx = 11 - номер подфункции | :* ebx = 11 - номер подфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0/1 - запрещён/разрешён | :* eax = 0/1 - запрещён/разрешён | ||
Замечания: | Замечания: | ||
* Используется при LBA-чтении (подфункция 8 функции 58). | :* Используется при LBA-чтении (подфункция 8 функции 58). | ||
* Установить текущее состояние можно вызовом подфункции 11 функции 21. | :* Установить текущее состояние можно вызовом | ||
::подфункции 11 функции 21. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM_GET (26) | |||
::ebx - SSF_ACCESS_HD_LBA (11) | |||
=== Подфункция 12 - узнать, разрешён ли низкоуровневый доступ к PCI. === | === Подфункция 12 - узнать, разрешён ли низкоуровневый доступ к PCI. === | ||
Параметры: | Параметры: | ||
* eax = 26 - номер функции | :* eax = 26 - номер функции | ||
* ebx = 12 - номер подфункции | :* ebx = 12 - номер подфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0/1 - запрещён/разрешён | :* eax = 0/1 - запрещён/разрешён | ||
Замечания: | Замечания: | ||
* Используется при работе с шиной PCI (функция 62). | :* Используется при работе с шиной PCI (функция 62). | ||
* Текущая реализация использует только младший бит ecx. | :* Текущая реализация использует только младший бит ecx. | ||
* Установить текущее состояние можно вызовом подфункции 12 функции 21. | :* Установить текущее состояние можно вызовом | ||
::подфункции 12 функции 21. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM_GET (26) | |||
::ebx - SSF_ACCESS_PCI (12) | |||
{{System_functions}} | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] |
Latest revision as of 15:34, 12 January 2022
Функция 26 - аппаратный сервис
Подфункция 1 - получить базовый порт MPU MIDI.
Параметры:
- eax = 26 - номер функции
- ebx = 1 - номер подфункции
Возвращаемое значение:
- eax = номер порта
Замечания:
- Установить базовый порт можно вызовом
- подфункции 1 функции 21.
Константы для регистров:
- eax - SF_SYSTEM_GET (26)
- ebx - SSF_MPU_MIDI_BASE (1)
Подфункция 2 - получить раскладку клавиатуры.
Раскладка клавиатуры используется для преобразования сканкодов, поступающих от клавиатуры, в ASCII-коды, считываемые функцией 2. Параметры:
- eax = 26 - номер функции
- ebx = 2 - номер подфункции
- ecx = какую раскладку получать:
- 1 = нормальную
- 2 = раскладку при нажатом Shift
- 3 = раскладку при нажатом Alt
- edx = указатель на буфер длиной 128 байт, куда будет скопирована
- раскладка
Возвращаемое значение:
- функция не возвращает значения
- но, если указатель в edx недопустимый, например,
- регион [edx, edx + 128) пересекается с памятью ядра,
- то тогда функция возвращает -1
Или:
- eax = 26 - номер функции
- ebx = 2 - номер подфункции
- ecx = 9
Возвращаемое значение:
- eax = идентификатор страны (1=eng, 2=fi, 3=ger, 4=rus)
Замечания:
- Если нажат Alt, то используется раскладка с Alt;
- если не нажат Alt, но нажат Shift, то используется
- раскладка с Shift;
- если не нажаты Alt и Shift, но нажат Ctrl, то используется
- нормальная раскладка, после чего из кода вычитается 0x60;
- если не нажата ни одна из управляющих клавиш, то используется
- нормальная раскладка.
- Установить раскладки и идентификатор страны можно с помощью
- подфункции 2 функции 21.
- Идентификатор страны - глобальная системная переменная, которая
- самим ядром не используется; однако приложение @taskbar отображает
- соответствующую текущей стране иконку
- (используя описываемую функцию).
- Приложение @taskbar переключает раскладки по запросу пользователя.
Константы для регистров:
- eax - SF_SYSTEM_GET (26)
- ebx - SSF_KEYBOARD_LAYOUT (2)
Подфункция 5 - получить язык системы.
Параметры:
- eax = 26 - номер функции
- ebx = 5 - номер подфункции
Возвращаемое значение:
- eax = язык системы (1=eng, 2=fi, 3=ger, 4=rus)
Замечания:
- Язык системы - глобальная системная переменная, никак
- не используемая самим ядром, однако приложение @taskbar рисует
- соответствующую иконку (используя описываемую функцию).
- Установить язык системы можно вызовом подфункции 5 функции 21.
Константы для регистров:
- eax - SF_SYSTEM_GET (26)
- ebx - SSF_SYS_LANG (5)
Подфункция 9 - получить значение счётчика времени.
Параметры:
- eax = 26 - номер функции
- ebx = 9 - номер подфункции
Возвращаемое значение:
- eax = число сотых долей секунды, прошедших с момента
- запуска системы
Замечания:
- Счётчик берётся по модулю 2^32, что соответствует немногим более
- 497 суток.
- Системное время можно получить функцией 3.
Константы для регистров:
- eax - SF_SYSTEM_GET (26)
- ebx - SSF_TIME_COUNT (9)
Подфункция 10 - получить значение высокоточного счётчика времени.
Параметры:
- eax = 26 - номер функции
- ebx = 10 - номер подфункции
Возвращаемое значение:
- edx:eax = число наносекунд с момента загрузки ядра
- eax = младшее двойное слово
- edx = старшее двойное слово
Замечание:
- функция использует счётчик HPET, если HPET не доступен используется
- счётчик PIT. В этом случае точность будет уменьшена до 10 000 000
- наносекунд.
Константы для регистров:
- eax - SF_SYSTEM_GET (26)
- ebx - SSF_TIME_COUNT_PRO (10)
Подфункция 11 - узнать, разрешён ли низкоуровневый доступ к HD.
Параметры:
- eax = 26 - номер функции
- ebx = 11 - номер подфункции
Возвращаемое значение:
- eax = 0/1 - запрещён/разрешён
Замечания:
- Используется при LBA-чтении (подфункция 8 функции 58).
- Установить текущее состояние можно вызовом
- подфункции 11 функции 21.
Константы для регистров:
- eax - SF_SYSTEM_GET (26)
- ebx - SSF_ACCESS_HD_LBA (11)
Подфункция 12 - узнать, разрешён ли низкоуровневый доступ к PCI.
Параметры:
- eax = 26 - номер функции
- ebx = 12 - номер подфункции
Возвращаемое значение:
- eax = 0/1 - запрещён/разрешён
Замечания:
- Используется при работе с шиной PCI (функция 62).
- Текущая реализация использует только младший бит ecx.
- Установить текущее состояние можно вызовом
- подфункции 12 функции 21.
Константы для регистров:
- eax - SF_SYSTEM_GET (26)
- ebx - SSF_ACCESS_PCI (12)
|