Функция 46 - зарезервировать/освободить группу портов ввода/вывода.
Внимание:
Эта функция устарела и может быть удалена в следующих версиях ядра.
При необходимости прямого (бездрайверного) ввода/вывода в порты и в память
внешних устройств рекомендуется использовать функцию 62.
К зарезервированным портам можно обращаться напрямую из приложения
командами in/out (рекомендуемый способ) и вызовом функции 43
(нерекомендуемый способ).
Параметры:
eax = 46 - номер функции
ebx = 0 - зарезервировать, 1 - освободить
ecx = номер начала диапазона портов
edx = номер конца диапазона портов (включительно)
Возвращаемое значение:
eax = 0 - успешно
eax = 1 - ошибка
Замечания:
Чтобы избежать ошибок, при резервировании портов необходимо соблюдать
некоторые условия:
начальный адрес должен быть не больше конечного;
указанный диапазон должен содержать корректные адреса портов (в диапазоне
от 0 до 0xFFFF);
допускается не более 255 резервируемых адресов;
указанный диапазон не должен пересекаться с одним из ранее
зарезервированных.
В случае освобождения портов ошибкой считается попытка
освобождения диапазона, который ранее не был целиком
зарезервирован этой же функцией (с такими же значениями ecx,edx).
При обнаружении ошибки (в обоих случаях) никаких действий
не производится.
При загрузке система резервирует за собой порты
0..0x2D, 0x30..0x4D, 0x50..0xDF, 0xe5..0xFF (включительно).
При завершении потока автоматически освобождаются все
зарезервированные им порты.
KOS API | Содержание DocPack