SysFn46/ru

From KolibriOS wiki
Revision as of 13:31, 6 April 2010 by Art zh (talk | contribs) (Created page with ''''Функция 46 - зарезервировать/освободить группу портов ввода/вывода''' ---- К зарезервированным по...')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Функция 46 - зарезервировать/освободить группу портов ввода/вывода


К зарезервированным портам можно обращаться напрямую из приложения командами in/out (рекомендуемый способ) и вызовом функции 43 (нерекомендуемый способ).

Внимание:

  • Эта функция устарела и может быть удалена в следующих версиях ядра.
  • При необходимости прямого (бездрайверного) ввода/вывода в порты и в память внешних устройств рекомендуется использовать функцию 62

Параметры:

  • eax = 46 - номер функции
  • ebx = 0 - зарезервировать, 1 - освободить
  • ecx = номер начала диапазона портов
  • edx = номер конца диапазона портов (включительно)

Возвращаемое значение:

 * eax = 0 - успешно
 * eax = 1 - ошибка

Замечания:

  • В случае резервирования портов ошибкой считается невыполнение одного из следующих условий:
    • начальный адрес должен быть не больше конечного;
    • указанный диапазон должен содержать корректные адреса портов (в диапазоне от 0 до 0xFFFF);
    • допускается не более 255 резервируемых адресов;
    • указанный диапазон не должен пересекаться с одним из ранее зарезервированных.
  • В случае освобождения портов ошибкой считается попытка освобождения диапазона, который ранее не был целиком зарезервирован этой же функцией (с такими же значениями ecx, edx).
  • При обнаружении ошибки (в обоих случаях) никаких действий не производится.
  • При загрузке система резервирует за собой порты 0..0x2d, 0x30..0x4d, 0x50..0xdf, 0xe5..0xff (включительно).
  • При завершении потока автоматически освобождаются все зарезервированные им порты.