Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.02 c
2-1207994821
ZzZz
2008-04-12 14:07
2008.05.11
Minimize


3-1196988932
Killka
2007-12-07 03:55
2008.05.11
Экспорт данных в ExcЁль


2-1208237932
John_Korsh
2008-04-15 09:38
2008.05.11
Доступ к портам под XP.


15-1206463964
DillerXX
2008-03-25 19:52
2008.05.11
Помогите с матаном кому не лень


15-1206785103
Antonio
2008-03-29 13:05
2008.05.11
делфи