获取CorBindToRuntimeEx函数指针

来源:互联网 发布:手机淘宝怎么消除差评 编辑:程序博客网 时间:2024/06/06 07:07

http://stackoverflow.com/questions/776174/jcldotnet-and-some-odd-calling-patterns-using-assembler

将.h转换成Delphi的pas文件:http://www.drbob42.com/headconv/index.htm

http://rvelthuis.de/articles/articles-convert.html


function CorBindToRuntimeEx(pwszVersion, pwszBuildFlavor: PWideChar;
startupFlags: DWORD; const rclsid: TCLSID; const riid: TIID;
out pv): HRESULT; stdcall;
{$EXTERNALSYM CorBindToRuntimeEx}
...
var
_CorBindToRuntimeEx: Pointer = nil;

function CorBindToRuntimeEx;
begin
GetProcedureAddress(_CorBindToRuntimeEx, mscoree_dll,
'CorBindToRuntimeEx');
asm
mov esp, ebp
pop ebp
jmp [_CorBindToRuntimeEx]
end;
end;
...
OleCheck(CorBindToRuntimeEx(PWideCharOrNil(ClrVer),
PWideChar(ClrHostFlavorNames[Flavor]), Flags,
CLASS_CorRuntimeHost, IID_ICorRuntimeHost,
FDefaultInterface));