我有一个奇怪的问题,我没有遇到过,我必须提到我的主要编程语言是delphi而不是c ++,我可能会犯一个愚蠢的错误而且没有意识到。
我有以下代码:
ULONG myret;
PROCESS_BASIC_INFORMATION PRC;
...
NtQueryInformationProcess(hProcess,ProcessBasicInformation,(PVOID)(&PRC),sizeof(PROCESS_BASIC_INFORMATION),(PULONG)(&myret));
...
我收到以下错误消息:
GetCommandArgs.obj:错误LNK2019:未解析的外部符号 _NtQueryInformationProcess @ 20在函数_wmain
中引用
有什么问题?非常感谢。
答案 0 :(得分:4)
这是设计的。微软对于必须记录司法部和解决方案所强制执行的功能并不十分满意。它在MSDN文章中清楚地阐述了它:
NtQueryInformationProcess函数及其结构 返回是操作系统内部的,可能会发生变化 从Windows的一个版本到另一个版本。保持兼容性 对于您的应用程序,最好使用中提到的公共函数 而是对ProcessInformationClass参数的描述。
如果你使用NtQueryInformationProcess,请通过访问该函数 运行时动态链接。这为您的代码提供了机会 如果功能已被更改或删除,则会正常响应 操作系统。但是,签名更改可能不会 可检测的。
此功能没有关联的导入库。你必须使用 LoadLibrary和GetProcAddress函数动态链接到 NTDLL.DLL。
最后一行告诉你你需要做什么。第一行告诉你为什么不应该这样做。