![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Доступ к портам под XP. [D5, XP]
John_Korsh © (2008-04-15 09:38:00)Не поможете ли разобраться с кодом - пытаюсь использовать IOEngine для вывода на Lpt порт.
Как грамотно вызвать функцию GetPortIoApi (с какими параметрами) из модуля IOEngine:
//-------------------------------------------------------------------
unit IoEngine;
interface
uses windows;
type
MsrReg = record
regEax, regEdx: LongWord;
end;
MsrPass = record
regEsi, regEdi: LongWord;
end;
lpPortByteIn = function(port: Word; var val: Byte): Boolean; cdecl;
lpPortWordIn = function(port: Word; var val: Word): Boolean; cdecl;
lpPortDWordIn = function(port: Word; var val: LongWord): Boolean; cdecl;
lpPortByteOut = function(port: Word; val: Byte): Boolean; cdecl;
lpPortWordOut = function(port: Word; val: Word): Boolean; cdecl;
lpPortDWordOut = function(port: Word; val: LongWord): Boolean; cdecl;
ePortIo = record
PortByteIn: lpPortByteIn;
PortWordIn: lpPortWordIn;
PortDWordIn: lpPortDWordIn;
PortByteOut: lpPortByteOut;
PortWordOut: lpPortWordOut;
PortDWordOut: lpPortDWordOut;
end;
p_ePortIo = ^ePortIo;
lpGetPortIoPointers = procedure(portIo: p_ePortIo); cdecl;
function GetPortIoApi(var portIo: ePortIo): Boolean;
implementation
var
ioEngineDll: LongWord;
GetPortIoPointers: lpGetPortIoPointers;
function GetPortIoApi(var portIo: ePortIo): Boolean;
begin
result := false;
if (@GetPortIoPointers <> nil) then
begin
GetPortIoPointers(@portIo);
result := true;
end;
end;
//-------------------------------------------------------------------
Что мне подставлять в качестве параметра - код не совсем мне понятен, если мне надо только вывести байт на $378 порт или только считать оттуда?
GetPortIoAPI (?);
John_Korsh (2008-04-15 15:31:00) [1]Отвечаю сам себе - может кому понадобится.
Организовать переменную
var
portIo : ePortIo;
(модуль IOEngine должен быть виден из этого модуля)
Для вывода в порт:
if (GetPortIoApi(portIo)) then
begin
portIo.PortByteOut($378, $55);
end;
ну и остальные функции, соответственно.
tesseract (2008-04-15 11:51:00) [2]
> , как вызывать - то функцию?
Гм. Прочитай-ка про указатели. А то действительно вопросы посыпяться как из ведра, чего не те данные приходят. А ты даже переменную, тут не определил.
John_Korsh (2008-04-15 11:25:00) [3]В скачанном из Инет исходнике - record.
Простите, а что насчёт параметров, как вызывать - то функцию?
tesseract (2008-04-15 10:06:00) [4]
> ePortIo = record
По моему она всё таки packed.