1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include <ntddk.h>#include <wdf.h>DRIVER_INITIALIZE DriverEntry;EVT_WDF_DRIVER_UNLOAD MyEvtDriverUnload; // 卸载函数(KMDF 风格)EVT_WDF_DRIVER_DEVICE_ADD MyEvtDeviceAdd; // 必须定义,但可以不创建设备// 驱动卸载回调VOID MyEvtDriverUnload(_In_ WDFDRIVER Driver){ UNREFERENCED_PARAMETER(Driver); KdPrint(("qi: KMDF Driver Unload!\n"));}// 添加设备回调(必须提供,即使什么都不做)NTSTATUS MyEvtDeviceAdd( _In_ WDFDRIVER Driver, _Inout_ PWDFDEVICE_INIT DeviceInit){ UNREFERENCED_PARAMETER(Driver); UNREFERENCED_PARAMETER(DeviceInit); KdPrint(("qi: KMDF DeviceAdd called\n")); return STATUS_SUCCESS;}// KMDF 驱动入口函数NTSTATUS DriverEntry( _In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath){ WDF_DRIVER_CONFIG config; NTSTATUS status;KdPrint(("qi: KMDF DriverEntry\n"));WDF_DRIVER_CONFIG_INIT(&config, MyEvtDeviceAdd);config.EvtDriverUnload = MyEvtDriverUnload;status = WdfDriverCreate( DriverObject, RegistryPath, WDF_NO_OBJECT_ATTRIBUTES, &config, WDF_NO_HANDLE);if (!NT_SUCCESS(status)) { KdPrint(("qi: WdfDriverCreate failed: 0x%x\n", status));}return status;}