我读了一篇非常有趣的文章,内容涉及使用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'关键字,尝试更改调用约定,尝试更改包含...我总是以错误“未解析的外部符号...”结束。
我很沮丧,所以如果有人可以提供一些建议,我将不胜感激。谢谢。
最佳答案
您不会阅读http://www.codeproject.com/KB/recipes/keystroke-hook.aspx并尝试创建自己的键盘记录器吗?
无论如何,不要使用此方法,而是先调用ZwCreateFile然后调用ObReferenceObjectByHandle。