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;
WDF





