Функция 46 - зарезервировать/освободить группу портов ввода/вывода.
К зарезервированным портам можно обращаться напрямую из приложения
командами 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 (включительно).
- При завершении потока автоматически освобождаются все
зарезервированные им порты.