大家用FreeBasic时应该都有注意到示例里有一个driver.bas但是这玩意如何编译成.sys网上就几乎鲜有人提及。直接运行那个make.bat就报一堆错根本行不通。
经过作者花费N多时间踩坑无数,查阅各种资料,以及想办法,最终成功使用FreeBasic编译出了示例驱动,并正常运行。现将经验整理如下:
第一关:缺文件excpt.h sdkddkver.h,安装MSYS2将里面的这两个文件用fbfrog-master翻译为.bi
第二关:ntdef.bi winddk.bi 一堆报错,最多的是声明与winnt.bi重复,加注释解决。少量的原bi文件类型声明有问题,自己修正一下,还有个别类型没有定义自己查MSDN补一下。
第三关:这时能用FBC成功编译出.o文件啦!接下来就是编译成驱动啦,FB的ld.exe编译时始终会报找不到DriverEntry,这时从MSYS2里拷贝一个ld.exe过来文件名自己修改以免重复(下例ld64.exe)。
ld64.exe DRIVER.o --subsystem=native --image-base=0x10000 --entry=DriverEntry@8 --nostdlib -shared -L “路径自己改\lib\win64” -l ntoskrnl -o “DRIVER.sys”
第四关:我们的驱动这时就已经生成成功了,并且也能正常启动,停止并输出调试信息到DebugView。
有喜欢FB并想一起深入研究FB驱动后续的朋友可以加企鹅群,一起讨论。群号
dim aa(9) as long = {3,2,4,7,8,5,0,4,3}