Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
2-1207841263
smartleds
2008-04-10 19:27
2008.05.11
Подскажите в чем может быть причина создаю массив меток таким


6-1185968146
Тестер2
2007-08-01 15:35
2008.05.11
Sockets, MaxDataLen=8192


2-1208267267
assassin8899
2008-04-15 17:47
2008.05.11
AdoQuery и AdoTable


15-1206815238
Дмитрий С
2008-03-29 21:27
2008.05.11
беспроводная камера + смарт N93 + 3G


15-1206343589
Ega23
2008-03-24 10:26
2008.05.11
Возможно ли в Windows получение текущего времени




   Наверх