下载 Windows 驱动程序工具包 (WDK) - Windows drivers | Microsoft Docs
windows 11最新的WDK版本已出,对应的SDK版本 22000.1.210604-1628,目前无法在Visual Studio Installer中下载
驱动环境配置与安装
1.首先安装Visual Studio 2019或其他版本
2.下载SDK 22000.1.210604-1628.co_release_WindowsSDK.ISO直接解压安装。
一直next即可。
3.下载window11 对应的wdk.
使用
新建KMDF驱动项目测试
下面开启我们的第一个驱动helloword 开发
#include <ntddk.h>
#include <wdf.h>
DRIVER_INITIALIZE DriverEntry;
EVT_WDF_DRIVER_DEVICE_ADD KmdfHelloWorldEvtDeviceAdd;
NTSTATUS
DriverEntry(
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
// NTSTATUS variable to record success or failure
NTSTATUS status = STATUS_SUCCESS;
// Allocate the driver configuration object
WDF_DRIVER_CONFIG config;
// Print "Hello World" for DriverEntry
KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: DriverEntry\n"));
// Initialize the driver configuration object to register the
// entry point for the EvtDeviceAdd callback, KmdfHelloWorldEvtDeviceAdd
WDF_DRIVER_CONFIG_INIT(&config,
KmdfHelloWorldEvtDeviceAdd
);
// Finally, create the driver object
status = WdfDriverCreate(DriverObject,
RegistryPath,
WDF_NO_OBJECT_ATTRIBUTES,
&config,
WDF_NO_HANDLE
);
return status;
}
NTSTATUS
KmdfHelloWorldEvtDeviceAdd(
_In_ WDFDRIVER Driver,
_Inout_ PWDFDEVICE_INIT DeviceInit
)
{
// We're not using the driver object,
// so we need to mark it as unreferenced
UNREFERENCED_PARAMETER(Driver);
NTSTATUS status;
// Allocate the device object
WDFDEVICE hDevice;
// Print "Hello World"
KdPrintEx((DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "KmdfHelloWorld: KmdfHelloWorldEvtDeviceAdd\n"));
// Create the device object
status = WdfDeviceCreate(&DeviceInit,
WDF_NO_OBJECT_ATTRIBUTES,
&hDevice
);
return status;
}
编译配置
1.代码写好后,在左侧工程名(hellodrv)上右键,选择properties,进行工程的设置,选择目标操作系统版本
2.调试--》支持仅我的代码调试调试 ,设置为否
3.c/c++ --》常规--》将警告视为错误,改为否
3.inf2Cat设置
Inf2Cat (inf2Cat .exe) 是一个命令行工具,用于确定驱动程序包的INF 文件是否可以为指定的 Windows 版本列表进行数字签名。如果是这样,Inf2Cat 生成适用于指定 Windows 版本的未签名目录文件。
编译
编译后出现MSB8040错误信息
此项目需要 Spectre 缓解库
解决方法
方法一、c/C++--》SpectreMitigation,设置Disabled
方法二、visual Studio installer安装缓解库
编译