![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
asm in/out [D3, Win2k]
BorisMurmansk © (2001-10-01 15:29:00)Для обмена данными через порты ввода/вывода (ISA карта) в Pascal был предусмотрен массив Port[]. В Deplhi (Win32) пришлось использовать ассемблерные вставки и команды in/out.
При попытки скомпилировать этот код в Windows 2000 (NT) получаю exception Privileged Instuction.
Есть ли выход? И вообше где можно почитать о ньюансах перехода на NT?
Заранее благодарен... Борис
Mbo (2001-10-05 09:50:00) [1]Выложил в кладовку
Gnome (2001-10-05 00:44:00) [2]и мне плз.!!!
stasev (2001-10-04 11:31:00) [3]I mne ppogalyista esli mogno, pls :(
Mbo (2001-10-03 12:35:00) [4]Отправил BorisMurmansk и Andrew22
Andrew22 (2001-10-03 11:28:00) [5]Намыльте, pls. pautine@yahoo.com
MBo (2001-10-03 07:26:00) [6]В NT (пробовалось в NT4) можно работать с портами как обычно, т.е.
procedure ByteOutPort(PortNum:Word;OutValue:Byte);
begin
asm
mov dx,PortNum
mov al,OutValue
out dx,al
end;
end;
и соответственно
ByteOutPort($378,$0D);
если установлен драйвер giveio
Есть компоненты, создающие его автоматически. Намылить?
unionsoft (2001-10-01 19:31:00) [7]Посмотри здесь:
http://www.webdoc.ru/text.phtml?level=&id=27&script_id=750
Digitman (2001-10-01 16:14:00) [8]Ну, положим, при компиляции ты не получишь Exception - поймаешь ты его однозначно только в run-time
В NT выход один - писать и инсталлировать SYS-драйвер, работающий с портами. Обрати свой взор на MS DDK - он как раз и ориентирован на генерацию драверов устройств.
В Win9x же с защитой попроще - можно обойтись и без драйвера : перейдя на 0-й уровень привелегий, можно творить с любыми портами все, что тебе заблагорассудится. Но лучше, конечно, задействовать все тот же DDK для генерации VXD-драйвера. Тем более, если с устройством предполагается работать одновременно по запросам из нескольких задач, выполняемых одновременно - драйвер, кроме собственно ввода-вывода, будет выполнять ф-ции арбитра доступа к портам при возникновении коллизий, связанных с попыткой одновременного обращения более чем одного кодового потока к виртуальному устр-ву