2011-08-13 68 views
0

我有一個奇怪的問題,我沒有遇到之前,我必須提到,我的主要編程語言是德爾福不是c + +,我可能會犯一個愚蠢的錯誤,並沒有意識到它。NtQueryInformationProcess將無法在Visual Studio 2010中工作

我有以下代碼:

ULONG myret; 
PROCESS_BASIC_INFORMATION PRC; 
... 
NtQueryInformationProcess(hProcess,ProcessBasicInformation,(PVOID)(&PRC),sizeof(PROCESS_BASIC_INFORMATION),(PULONG)(&myret)); 
... 

我收到以下錯誤信息:

GetCommandArgs.obj:錯誤LNK2019:解析外部符號 _NtQueryInformationProcess @ 20函數引用_wmain

什麼問題?非常感謝。

回答

4

這是設計。微軟並不是很高興不得不記錄這個被司法部解決的功能。這顯然是MSDN文章爲它闡明:

的NtQueryInformationProcess功能,它 回報是內部的操作系統,並受到來自一個Windows版本到另一個改變 結構。爲了保持應用程序的兼容性 ,最好使用 中提到的公用函數來描述ProcessInformationClass參數。

如果您使用NtQueryInformationProcess,請通過 運行時動態鏈接訪問該函數。如果該函數已被更改或從操作系統的 中刪除,這將使您的代碼有機會 正常響應。但是,簽名更改可能不是 可檢測。

該函數沒有關聯的導入庫。您必須使用 LoadLibrary和GetProcAddress函數動態鏈接到 Ntdll.dll。

最後一行告訴你你必須做什麼。第一行告訴你爲什麼你不應該。

+0

謝謝,雖然我不是很高興它:) – opc0de

+0

這是爲什麼?我說我不開心,因爲微軟使用這個政策是一個有用的功能。 – opc0de

相關問題