DLL Callback |
缺席
|
avex
初階會員 發表:19 回覆:49 積分:43 註冊:2003-03-28 發送簡訊給我 |
請問各位高手, 有個將 dll 包成 delphi component 過嗎? 要如何將 callback函數包成 'class' 裡面的 OnEvent function 呢(是 class, 不是flat-procedure喔)? 下面是我的一些組合語言, 不曉得是哪裡錯了, 可以OnEvent但離開時會Access Violation at 0x000000. 或者請問有什麼更容易的方法 ? function CreateStub(ObjectPtr: Pointer; MethodPtr: Pointer): Pointer;
var
Stub: ^TStub;
begin
// Allocate memory for the stub
New(Stub); // Pop the return address off the stack
Stub^.PopEDX := AsmPopEDX; // Push the object pointer on the stack
Stub^.MovEAX := AsmMovEAX;
Stub^.SelfPointer := ObjectPtr;
Stub^.PushEAX := AsmPushEAX; // Push the return address back on the stack
Stub^.PushEDX := AsmPushEDX; // Jump to the 'real' procedure, the method.
Stub^.JmpShort := AsmJmpShort;
Stub^.Displacement := (Integer(MethodPtr) -
Integer(@(Stub^.JmpShort))) -
(SizeOf(Stub^.JmpShort) SizeOf(Stub^.Displacement)); // Return a pointer to the stub
Result := Stub;
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |