WDF
+ -

WdfDriverCreate之WDF_DRIVER_CONFIG

2026-06-03 3 0
WDF_DRIVER_CONFIG
├── 必选配置
│   └── EvtDriverDeviceAdd     ← WDM: DriverObject->DriverExtension->AddDevice
│       (设备添加回调,处理 PnP AddDevice 请求)
│
├── 可选配置 - 驱动生命周期
│   ├── EvtDriverUnload        ← WDM: DriverObject->DriverUnload
│       (驱动卸载时清理资源)
│   └── EvtDriverDeviceAddFailed
│       (设备添加失败时的回调)
│
├── 可选配置 - 驱动级回调
│   ├── EvtDriverPreCleanup    ← WDM: 驱动卸载前清理
│       (驱动对象清理前调用)
│   └── EvtDriverCleanup       ← WDM: 驱动对象销毁
│       (驱动对象最终清理)
│
├── 可选配置 - 驱动策略
│   ├── DriverPoolTag          ← WDM: ExAllocatePoolWithTag 的 Tag
│       (驱动使用的内存池标签)
│   ├── MajorFunctionHandlers  ← WDM: DriverObject->MajorFunction[]
│       (直接注册的 WDM 派遣例程)
│   └── Version                ← WDM: 驱动版本信息
│       (驱动版本号)
│
├── 可选配置 - WDF 框架设置
│   ├── DispatchType           ← 框架内部使用
│       (驱动分发类型)
│   └── AutomaticManagedIo     ← 框架自动管理 I/O
│       (是否启用自动 I/O 管理)

代码:

// WDF 方式
WDF_DRIVER_CONFIG config;
WDF_DRIVER_CONFIG_INIT(&config, UsbSamp_EvtDeviceAdd);
config.EvtDriverUnload = UsbSamp_EvtDriverUnload;  // 可选
status = WdfDriverCreate(DriverObject, RegistryPath, 
                         WDF_NO_OBJECT_ATTRIBUTES, &config, WDF_NO_HANDLE);

// WDM 方式
DriverObject->DriverExtension->AddDevice = UsbSamp_AddDevice;
DriverObject->DriverUnload = UsbSamp_Unload;
// 设置 MajorFunction 派遣例程
DriverObject->MajorFunction[IRP_MJ_PNP] = UsbSamp_PnpDispatch;
DriverObject->MajorFunction[IRP_MJ_POWER] = UsbSamp_PowerDispatch;

0 篇笔记 写笔记

KMDF驱动程序结构
KMDF驱动程序包含DriverEntry函数(根据KMDF标识驱动程序)、 KMF调用的一系列回调函数(以便驱动程序能够对影响其设备的事件做出响应),以及驱动程序特有的其他实用函数。几乎每种KMDF驱动程序均必须具备下列函数。DriverEntry函数,表示驱动程序的主要入口点。EvtDriv......
WdfDriverCreate之WDF_DRIVER_CONFIG
WDF_DRIVER_CONFIG├── 必选配置│ └── EvtDriverDeviceAdd ← WDM: DriverObject->DriverExtension->AddDevice│ (设备添加回调,处理 PnP AddDevice 请求)│......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!