该项目使用(显然被忽略的)选项
<EntryPointSymbol>
将
EntryPoint
定义为入口点。
这在
此处有文档记录,但当前的文档似乎只适用于.exe和.dll项目。
所调用的消息形式来自Windows驱动程序系统。
NTSTATUS DriverInitialize(
_DRIVER_OBJECT *DriverObject,
PUNICODE_STRING RegistryPath
)
不兼容项目中的入口点。
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)中运行代码,以限制它可能造成的破坏。