1

我需要运行这段代码:

asm
 push eax
 mov eax, esp
 push 0
 push 4
 ...
 call NtQueryInformationThread
 ...
end;

但是我收到 NtQueryInformationThread 是“未声明的标识符:'NtQueryInformationThread'”的错误消息。

你能帮我申报吗?提前致谢。

4

1 回答 1

7

你缺少的是你需要让你的程序从ntdll.dll. 更重要的是,你不需要asm它,你真的应该避免使用它,因为它会使你的程序难以维护。

您可以像任何其他 Windows API 函数一样导入该函数:

function NtQueryInformationThread(
    ThreadHandle: THandle;
    ThreadInformationClass: THREADINFOCLASS;
    ThreadInformation: Pointer;
    ThreadInformationLength: ULONG;
    ReturnLength: PULONG
): NTSTATUS; stdcall; external 'ntdll.dll';

您还需要几个类型声明:

type
  NTSTATUS = LONG;
  THREADINFOCLASS = DWORD;
于 2012-04-13T09:32:19.620 回答