WDF的DriverEntry实例:
NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ) { WDF_DRIVER_CONFIG config; //此结构说明这个驱动程序的一些可配置项,包括EvtDriverDeviceAdd和EvtDriverUnload回调函数的入口地址,这个驱动在初始化时的一些标志和这个驱动在分配内存时使用的tag值。 NTSTATUS status = STATUS_SUCCESS; WDF_DRIVER_CONFIG_INIT( //一个宏,把MyEvtDeviceAdd回调函数的入口地址存入config,并且初始化config的其他部分。 &config, MyEvtDeviceAdd ); config.EvtDriverUnload = MyEvtDriverUnload;//设置Unload函数 status = WdfDriverCreate( //根据参数来对WDF中的一些环境进行初始化工作,并建立这个WDF驱动对象 DriverObject, //驱动对象 RegistryPath, //注册表路径 WDF_NO_OBJECT_ATTRIBUTES, //属性 &config, //WDF_DRIVER_CONFIG结构 WDF_NO_HANDLE ); if (!NT_SUCCESS(status)) { TraceEvents( TRACE_LEVEL_ERROR, DBG_PNP, "WdfDriverCreate failed with status %!STATUS!", status ); } return status; }
WdfDriverCreate
时间: 2024-10-29 11:41:18