我需要在 Delphi 中调用 RtlQueryProcessHeapInformation。RtlQueryProcessHeapInformation 是从 ntdll.dll 导出的函数。我没有这个函数的原型。我收到“未声明的标识符”错误。
asm
...
xchg ebx, eax
pop ebp
call RtlQueryProcessHeapInformation
dec ebp
...
end;
谢谢您的帮助。
我需要在 Delphi 中调用 RtlQueryProcessHeapInformation。RtlQueryProcessHeapInformation 是从 ntdll.dll 导出的函数。我没有这个函数的原型。我收到“未声明的标识符”错误。
asm
...
xchg ebx, eax
pop ebp
call RtlQueryProcessHeapInformation
dec ebp
...
end;
谢谢您的帮助。
NTSTATUS NTAPI RtlQueryProcessHeapInformation(
IN OUT PRTL_DEBUG_INFORMATION Buffer
);
NTSTATUS
您已经从上一个问题中知道了什么。至于NTAPI
,那是__stdcall
。这意味着 Delphi 中的函数声明是:
function RtlQueryProcessHeapInformation(
Buffer: PRTL_DEBUG_INFORMATION
): NTSTATUS; stdcall; external 'ntdll.dll';
我链接到的页面还包含一个声明,PRTL_DEBUG_INFORMATION
我相信你可以自己翻译。您仍然需要对参数的含义进行逆向工程,因为这是一个实现私有的、未记录的函数。
这是您提出的第二个几乎相同的问题。在这两个问题中,您都将问题作为汇编程序问题提出。但事实并非如此。在这两个问题中,您都需要制定函数的声明,以及如何从外部 DLL 中导入它。你应该从中得到的是,当你需要调用另一个 DLL 中的函数时,你可以做以下两件事之一:
external
使用我在您的两个问题中显示的代码隐式导入它。这是更简单的方法。LoadLibrary
andGetProcAddress
显式导入它。这是比较费力的方法。请不要采取错误的方式——我只是想向您展示您需要知道什么才能自己解决这些问题。