Главная страница
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.018 c
2-1207662818
switch
2008-04-08 17:53
2008.05.11
Как изменить цвет QRShape


2-1207893241
F@T@L_Err0r
2008-04-11 09:54
2008.05.11
Сообщения виндовс


15-1206973787
MASTAFA
2008-03-31 18:29
2008.05.11
Помогите с asm 16 перевести на 32 таких два небольших кусочка


2-1207817112
ChaosAD
2008-04-10 12:45
2008.05.11
Ehlib DialogFind


2-1207902209
An software developer
2008-04-11 12:23
2008.05.11
Подскажите, правильно ли подавляются сообщения об ошибках?