加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 如何解决函数GsDriverEntry中引用的LNK2019未解析的

发布时间:2020-12-14 02:01:56 所属栏目:Windows 来源:网络整理
导读:我正在编译这个项目 https://github.com/namazso/hdd_serial_spoofer 我收到上面的错误信息,我该如何解决? 我正在使用vs 2017和wdk 10. (必须在发布时编译,不支持调试模式.在这个项目中没有DriverEntry函数,hwid.cpp中的EntryPoint(void * ntoskrn,void * i
我正在编译这个项目 https://github.com/namazso/hdd_serial_spoofer

我收到上面的错误信息,我该如何解决?
我正在使用vs 2017和wdk 10.

(必须在发布时编译,不支持调试模式.在这个项目中没有DriverEntry函数,hwid.cpp中的EntryPoint(void * ntoskrn,void * image,void * alloc)函数是真正的入口点.)

我做了很多研究,但仍未能使其工作.我是内核模式驱动程序开发的菜鸟.

解决方法

该项目使用(显然被忽略)选项

< EntryPointSymbol>将EntryPoint定义为条目.

这是here的文档,但是当前的文档似乎意味着这仅适用于.exe和.dll项目.

从Windows驱动程序系统调用的消息的形式

NTSTATUS DriverInitialize(
  _DRIVER_OBJECT *DriverObject,PUNICODE_STRING RegistryPath
)

与项目中的EntryPoint不兼容

EntryPoint(void* ntoskrn,void* image,void* alloc)

这并不是很糟糕,因为没有使用为EntryPoint调用的参数.

所以最简单的实现就是

extern "C"
{
    DRIVER_INITIALIZE DriverEntry;
    _Use_decl_annotations_
        NTSTATUS
        DriverEntry(
            struct _DRIVER_OBJECT  *DriverObject,PUNICODE_STRING  RegistryPath
        )
    {
        EntryPoint(NULL,NULL,NULL);
        return STATUS_SUCCESS;
    }
}

内核开发不适合胆小的人,并且在您的计算机上运行无效的内核代码可能会使启动变得困难,或者在极端情况下损坏计算机.我没有检查项目中的任何代码是否正确.

请在虚拟机(vmware,virtualbox,hyper-v)中运行代码以限制它可能造成的损害

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读