Difference between revisions of "SysFn46/ru"
Jump to navigation
Jump to search
(Created page with ''''Функция 46 - зарезервировать/освободить группу портов ввода/вывода''' ---- К зарезервированным по...') |
|||
(4 intermediate revisions by 4 users not shown) | |||
Line 2: | Line 2: | ||
---- | ---- | ||
− | |||
− | |||
− | |||
'''Внимание:''' | '''Внимание:''' | ||
− | * Эта функция устарела и может быть удалена в следующих версиях ядра. | + | :* Эта функция устарела и может быть удалена в следующих версиях ядра. |
− | * При необходимости прямого (бездрайверного) ввода/вывода в порты и в память внешних устройств рекомендуется использовать [[SysFn62|функцию 62]] | + | :* При необходимости прямого (бездрайверного) ввода/вывода в порты и в память внешних устройств рекомендуется использовать [[SysFn62/ru|функцию 62]] |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | К зарезервированным портам можно обращаться напрямую из приложения командами in/out. | |
− | * В случае резервирования портов ошибкой считается | + | Параметры: |
− | + | :* eax = 46 - номер функции | |
− | + | :* ebx = 0 - зарезервировать, 1 - освободить | |
− | * | + | :* ecx = номер начала диапазона портов |
− | + | :* edx = номер конца диапазона портов (включительно) | |
− | * В случае освобождения портов ошибкой считается попытка освобождения диапазона, который ранее не был целиком зарезервирован этой же функцией (с такими же значениями ecx, edx). | + | Возвращаемое значение: |
− | * При обнаружении ошибки (в обоих случаях) никаких действий не производится. | + | :* eax = 0 - успешно |
− | * При загрузке система резервирует за собой порты 0..0x2d, 0x30..0x4d, 0x50..0xdf, 0xe5..0xff (включительно). | + | :* eax = 1 - ошибка |
− | * При завершении потока автоматически освобождаются все зарезервированные им порты. | + | Замечания: |
+ | :* В случае резервирования портов ошибкой считается выполнение одного из условий: | ||
+ | ::* начальный адрес больше конечного; | ||
+ | ::* указанный диапазон содержит некорректный номер порта (корректные - от 0 до 0xFFFF); | ||
+ | ::* превышено ограничение на общее число зарезервированных областей - допускается максимум 255; | ||
+ | ::* указанный диапазон пересекается с одним из ранее зарезервированных | ||
+ | :* В случае освобождения портов ошибкой считается попытка освобождения диапазона, который ранее не был целиком зарезервирован этой же функцией (с такими же значениями ecx,edx). | ||
+ | :* При обнаружении ошибки (в обоих случаях) никаких действий не производится. | ||
+ | :* При загрузке система резервирует за собой порты 0..0x2d, 0x30..0x4d, 0x50..0xdf, 0xe5..0xff (включительно). | ||
+ | :* При завершении потока автоматически освобождаются все зарезервированные им порты. | ||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_SET_PORTS (46) | ||
{{System_functions}} | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] |
Latest revision as of 16:58, 19 March 2022
Функция 46 - зарезервировать/освободить группу портов ввода/вывода
Внимание:
- Эта функция устарела и может быть удалена в следующих версиях ядра.
- При необходимости прямого (бездрайверного) ввода/вывода в порты и в память внешних устройств рекомендуется использовать функцию 62
К зарезервированным портам можно обращаться напрямую из приложения командами in/out. Параметры:
- eax = 46 - номер функции
- ebx = 0 - зарезервировать, 1 - освободить
- ecx = номер начала диапазона портов
- edx = номер конца диапазона портов (включительно)
Возвращаемое значение:
- eax = 0 - успешно
- eax = 1 - ошибка
Замечания:
- В случае резервирования портов ошибкой считается выполнение одного из условий:
- начальный адрес больше конечного;
- указанный диапазон содержит некорректный номер порта (корректные - от 0 до 0xFFFF);
- превышено ограничение на общее число зарезервированных областей - допускается максимум 255;
- указанный диапазон пересекается с одним из ранее зарезервированных
- В случае освобождения портов ошибкой считается попытка освобождения диапазона, который ранее не был целиком зарезервирован этой же функцией (с такими же значениями ecx,edx).
- При обнаружении ошибки (в обоих случаях) никаких действий не производится.
- При загрузке система резервирует за собой порты 0..0x2d, 0x30..0x4d, 0x50..0xdf, 0xe5..0xff (включительно).
- При завершении потока автоматически освобождаются все зарезервированные им порты.
Константы для регистров:
- eax - SF_SET_PORTS (46)
|