interface
uses kol, Share, Debug;
type
TCallbackProcess = packed record
POPEDX: Byte;
MOVEAX: Byte;
SelfPtr: Pointer;
PUSHEAX: Byte;
PUSHEDX: Byte;
JMP: Byte;
JmpOffset: Integer;
end;
type
....
Callback: TCallbackProcess;
private
......
public
.....
constructor Create;
destructor Destroy; override;
end;
implementation
constructor THiAsmClass.Create;
begin
inherited Create;
Callback.POPEDX := $5A;
Callback.MOVEAX := $B8;
Callback.SelfPtr :=Self;
Callback.PUSHEAX := $50;
Callback.PUSHEDX := $52;
Callback.JMP := $E9;
Callback.JmpOffset := Integer(@TTHiAsmClass.doInit) - Integer(@Callback.JMP) - 5;
end;
destructor THiAsmClass.Destroy;
begin
inherited
end;
procedure THiAsmClass.doInit; stdcall;
begin
//
end;
end.
http://programmerz.ru/questions/155014/how-to-pass-a-method-as-callback-to-a-windows-api-call-follow-up-question.html
P.S.
и даже если переношу прям 1 в 1 функцию
Это зря.
Поэтому и
не работает, для кода требуется ProcID и DriverHandle.
Обрати внимание на:
unit himy;
....
type
THImy = class(TDebug)
....
implementation
procedure THImy._work_doXXX;
.....