Текущий архив: 2008.05.11;
Скачать: CL | DM;
Вниз
Доступ к портам под XP. Найти похожие ветки
← →
John_Korsh © (2008-04-15 09:38) [0]Не поможете ли разобраться с кодом - пытаюсь использовать 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 (?);
← →
tesseract © (2008-04-15 10:06) [1]
> ePortIo = record
По моему она всё таки packed.
← →
John_Korsh © (2008-04-15 11:25) [2]В скачанном из Инет исходнике - record.
Простите, а что насчёт параметров, как вызывать - то функцию?
← →
tesseract © (2008-04-15 11:51) [3]
> , как вызывать - то функцию?
Гм. Прочитай-ка про указатели. А то действительно вопросы посыпяться как из ведра, чего не те данные приходят. А ты даже переменную, тут не определил.
← →
John_Korsh © (2008-04-15 15:31) [4]Отвечаю сам себе - может кому понадобится.
Организовать переменную
var
portIo : ePortIo;
(модуль IOEngine должен быть виден из этого модуля)
Для вывода в порт:
if (GetPortIoApi(portIo)) then
begin
portIo.PortByteOut($378, $55);
end;
ну и остальные функции, соответственно.
Страницы: 1 вся ветка
Текущий архив: 2008.05.11;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c