尝试创建驱动程序时出现大量错误

问题描述

我正在尝试创建一个不可终止的进程,这很有趣,但它需要一个驱动程序,我什至无法编译示例驱动程序,我该怎么办。

||=== Build: Debug in Test Driver (compiler: GNU GCC Compiler) ===|
C:\Windows Kits\10\Include\10.0.20348.0\km\ntddk.h|39|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\ntddk.h|40|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\ntddk.h|41|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\ntddk.h|42|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\ntddk.h|43|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\ntddk.h|44|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\ntddk.h|45|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|38|error: #error Compiler version not supported by Windows DDK|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|49|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|50|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|51|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|52|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|53|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|54|warning: ignoring #pragma warning  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|63|warning: return type defaults to 'int' [-Wimplicit-int]|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h||In function '_Analysis_mode_':|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|64|error: expected declaration specifiers before '_Analysis_mode_'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|76|error: storage class specified for parameter 'PCALLBACK_OBJECT'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|84|error: storage class specified for parameter 'PEPROCESS'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|85|error: storage class specified for parameter 'PETHREAD'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|87|error: storage class specified for parameter 'PIO_TIMER'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|88|error: storage class specified for parameter 'PKINTERRUPT'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|89|error: storage class specified for parameter 'PKTHREAD'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|89|error: storage class specified for parameter 'PRKTHREAD'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|90|error: storage class specified for parameter 'PKPROCESS'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|90|error: storage class specified for parameter 'PRKPROCESS'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|91|error: storage class specified for parameter 'POBJECT_TYPE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|92|error: storage class specified for parameter 'PSecurity_QUALITY_OF_SERVICE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|99|error: storage class specified for parameter 'PCONTEXT'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|100|error: storage class specified for parameter 'PIO_STACK_LOCATION'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|101|error: storage class specified for parameter 'PVPB'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|102|error: storage class specified for parameter 'PFILE_GET_QUOTA_informatION'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|109|error: unkNown type name '_In_'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|114|warning: ignoring #pragma intrinsic  [-WunkNown-pragmas]|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|118|error: expected '=',',';','asm' or '__attribute__' before 'KeGetCurrentThread'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|39|error: storage class specified for parameter 'MCA_EXCEPTION_TYPE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|54|error: storage class specified for parameter 'MCI_ADDR'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|54|error: storage class specified for parameter 'PMCI_ADDR'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|96|error: storage class specified for parameter 'MCI_STATS'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|96|error: storage class specified for parameter 'PMCI_STATS'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|141|error: expected specifier-qualifier-list before 'MCA_EXCEPTION_TYPE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|168|error: storage class specified for parameter 'MCA_EXCEPTION'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|168|error: storage class specified for parameter 'PMCA_EXCEPTION'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|196|error: expected '=','asm' or '__attribute__' before 'CMC_EXCEPTION'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|197|error: expected '=','asm' or '__attribute__' before 'CPE_EXCEPTION'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|215|error: storage class specified for parameter 'ERROR_SEVERITY'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|215|error: storage class specified for parameter 'PERROR_SEVERITY'|
C:\Windows Kits\10\Include\10.0.20348.0\km\mce.h|222|error: storage class specified for parameter 'ERROR_SEVERITY_VALUE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|180|error: storage class specified for parameter 'KeNumberProcessors'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|180|warning: 'dllimport' attribute ignored [-Wattributes]|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|279|error: storage class specified for parameter 'KSYstem_TIME'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|279|error: storage class specified for parameter 'PKSYstem_TIME'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|286|error: storage class specified for parameter 'KPRIORITY'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|295|error: storage class specified for parameter 'KSPIN_LOCK'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|296|error: expected '=','asm' or '__attribute__' before '*' token|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|327|error: storage class specified for parameter 'KSPIN_LOCK_QUEUE_NUMBER'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|375|error: expected specifier-qualifier-list before 'PKSPIN_LOCK'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|376|error: storage class specified for parameter 'KSPIN_LOCK_QUEUE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|376|error: storage class specified for parameter 'PKSPIN_LOCK_QUEUE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|379|error: expected specifier-qualifier-list before 'KSPIN_LOCK_QUEUE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|381|error: storage class specified for parameter 'KLOCK_QUEUE_HANDLE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|381|error: storage class specified for parameter 'PKLOCK_QUEUE_HANDLE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|412|error: storage class specified for parameter 'KPROFILE_SOURCE'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|429|error: storage class specified for parameter 'DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|429|error: storage class specified for parameter 'PDPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|440|error: storage class specified for parameter 'M128A'|
C:\Windows Kits\10\Include\10.0.20348.0\km\wdm.h|440|error: storage class specified for parameter 'PM128A'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build Failed: 50 error(s),16 warning(s) (0 minute(s),14 second(s)) ===|

那么你到底如何才能制作一个正常运行的驱动程序。

这是驱动程序本身:

#include <ntddk.h>

NTSTATUS
STDCALL
Driverdispatch(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp)
{
    return STATUS_SUCCESS;
}

VOID
STDCALL
DriverUnload(IN PDRIVER_OBJECT DriverObject)
{
    DbgPrint("DriverUnload() !\n");
    return;
}

NTSTATUS
STDCALL
DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)
{
    DbgPrint("DriverEntry() !\n");

    DriverObject->DriverUnload = DriverUnload;

    return STATUS_SUCCESS;
}

我也尝试使用 Visual Studio(社区)来制作它,但我遇到了大量错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)