我想在Delphi中使用这个简单的C函数,但无法完美地将值转换为指针。
C函数:
Delphi函数:
对不起,我的英语不好。
C函数:
PVOID GetInterfaceMethod(PVOID intf, DWORD methodIndex)
{
return *(PVOID*)(*(DWORD_PTR*)intf + methodIndex);
}
Delphi函数:
function GetInterfaceMethod(const intf; methodIndex: DWORD): Pointer;
begin
// return *(PVOID*)(*(DWORD_PTR*)intf + methodIndex); x64
// return *(PVOID*)(*(DWORD*)intf + methodIndex * 4); x86
Result := Pointer(Pointer(DWORD_PTR(Pointer(intf)^) + methodIndex)^); //x64
end;
对不起,我的英语不好。
return *(PVOID*)(*(DWORD_PTR*)intf + methodIndex*sizeof(PVOID));
这样做虽然可行,但是这是一种相当糟糕的方式。 - David Heffernan