2012-04-13 61 views
1

我需要運行該代碼:導入系統功能(窗口 - ntsystem.dll)爲內聯彙編使用

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

但我得到的錯誤消息NtQueryInformationThread是 「未說明的標識符NtQueryInformationThread「 」。

你能幫我申報嗎? 在此先感謝。

+0

看看到['JclWin32.pas '](http://jcl.svn.sourceforge.net/viewvc/jcl/trunk/jcl/source/windows/JclWin32.pas?revision=3776&view=markup)。你會找到答案。 – TLama 2012-04-13 09:07:44

回答

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; 
+0

非常感謝您的幫助 – 2012-04-13 09:45:29