我读过一篇非常有趣的文章,是关于使用 wdk 编程驱动程序的,其中使用的一个函数称为 ObReferenceObjectByName。这个功能让我很头疼。第一个坏事是微软没有记录它。第二件事,文章中使用的语言是 C++,我想将我的代码保持在普通的 C 语言中。我知道大多数时候这不应该是一个问题,但我没有 - 因为我的生活 - 能够弄清楚如何包含此功能。
文章中的代码类似于:
extern "C"{
#include <ntifs.h>
NTSYSAPI NTSTATUS NTAPI ObReferenceObjectByName(PUNICODE_STRING ObjectName,
ULONG Attributes,
PACCESS_STATE AccessState,
ACCESS_MASK DesiredAccess,
POBJECT_TYPE ObjectType,
KPROCESSOR_MODE AccessMode,
PVOID ParseContext OPTIONAL,
PVOID* Object);
}
我已经尝试复制这个几个小时了。我尝试在没有'extern'关键字的情况下声明它,我尝试更改调用约定,我尝试更改包含...我总是以错误“未解析的外部符号...”结束。
我完全被难住了,所以如果有人能提供一些建议,我将不胜感激。谢谢。