Главная страница
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.016 c
15-1206198956
@!!ex
2008-03-22 18:15
2008.05.11
Откуда можно скачать дистр Windows Vista Home Basic?


15-1206587384
slider007
2008-03-27 06:09
2008.05.11
С днем рождения ! 27 марта 2008 четверг


2-1208200976
Boris
2008-04-14 23:22
2008.05.11
Бинарный файл


15-1206673504
borisich
2008-03-28 06:05
2008.05.11
нужно ли идти в армию...


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