![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема [D7, WinXP]
sofs © (2005-05-28 09:56:00)Тут начал работать с портами.ВВожу вот такой код:(Д7)
function InPort(PortAddr:word): byte;
{$IFDEF WIN32}
assembler; stdcall;
asm
mov dx,PortAddr
in al,dx
end;
{$ELSE}
begin
Result := Port[PortAddr];
end;
{$ENDIF}
При исполнении ошибка 'privileget instruction' возникает в строкеin al,dx.Можно ли это обойти?
если есть какие-то другие способы работы с портами-подскажите плиз где можно найти инфу о сабже.
p.s.Этот код был рекомендован для работы с портами вводы\вывода для режима win32,но на моём компе с WinXp выдаётся вышеуказанная ошибка.
p.p.s.В той же статье сказано:В Delphi 1 записывать и считывать из портов можно через глобальный массив 'ports'. Однако данная возможность отсутствует в '32-битном' Delphi.Если как-то можно работать с массивом ports в D7,то как или опять-же где можно найти инфу по этому вопросу.
isasa (2005-05-28 10:24:00) [1]В OS NT4 и выше "простым" программам работа с железом напрямую запрещена.
Попробуй прорваться через API функцию
cHandle := CreateFile(PortName,
GENERIC_READ+GENERIC_WRITE,
FILE_SHARE_READ+FILE_SHARE_WRITE,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL+FILE_FLAG_OVERLAPPED,
0);
где, PortName:='COM1'; //'COM2'...
В делф. есть хелп на нее.