我正在尝试编译一些最后使用Visual Studio 2015在VC 6.0中编译的驱动程序代码 .

链接器一直给我警告LNK4086说明:

入口点'_DriverEntry @ 8'不是__stdcall,带有12个字节的参数;图像可能无法运行

该方法应使用 __stdcall 约定,因为项目已设置 /Gz 选项 . 我甚至尝试手动添加选项以使其高兴,但链接器仍然抱怨:

_Use_decl_annotations_
NTSTATUS
__stdcall
DriverEntry(
    PDRIVER_OBJECT DriverObject,
    PUNICODE_STRING RegistryPath
    )

这个警告阻止我完成编译,因为它告诉我:

警告视为错误;没有生成输出文件

这是我的链接器选项(为了隐私目的,我删除了文件名):

/ OUT:“[FILENAME REMOVED] .sys”/ MANIFEST:NO / PROFILE / NXCOMPAT / Driver / PDB:“[FILENAME REMOVED] .pdb”/ DYNAMICBASE“wdm.lib”“usbd.lib”/ RELEASE / IMPLIB: “[FILENAME REMOVED] .lib”/VERSION:"4.0“/ DLL / BASE:”0x10000“/ MACHINE:X86 / ENTRY:”DriverEntry“/ WX / OPT:REF / SAFESEH / INCREMENTAL:NO / PGD:”[FILENAME REMOVED] .pgd“/ OPT:ICF / ERRORREPORT:PROMPT /MERGE:".rdata=.text”/ NOLOGO / LIBPATH:“\ lib \ i386 \ checked”/ LIBPATH:“C:\ Program Files(x86)\ Windows套件\ 10 \ Lib \ 10.0.10586.0 \ km \ x86 \“/ NODEFAULTLIB / SECTION:”INIT,d“