3

我是 Windows 驱动程序开发和微过滤器的新手,我正在尝试使用命令行工具构建nullFilter示例。所以我添加#pragma comment(lib, "FltMgr.lib")到 .c 文件并成功发出以下命令:

cl.exe /nologo /Fo../../bin\filter.obj /c filter.c /D _AMD64_
rc.exe /nologo /Fo../../bin\filter.res filter.rc

但是,当我尝试创建 sys 文件时:

link.exe /nologo /DRIVER:WDM /out:../../bin\filter.sys ../../bin\filter.obj ../../bin\filter.res
LINK : error LNK2001: unresolved external symbol NtProcessStartup
../../bin\filter.sys : fatal error LNK1120: 1 unresolved externals

我正在使用 VS2012 Express 和 WDM8。我的 LIB 环境变量是:

C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64;C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\km\x64;

我究竟做错了什么?我错过了什么吗?

4

1 回答 1

5

NtProcessStartup 功能用于驱动程序开发,就像常规 C 程序的“主要”功能一样。换句话说,就是你需要自己提供的程序入口功能。有关此功能的介绍和说明,请参见此处的文章。您可以使用 -entry 链接器选项来否决启动函数的名称。设置“-entry:DriverEntry”是驱动程序开发的常见做法。

于 2016-05-30T06:56:22.507 回答