WdfDriverCreate

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

WdfDriverCreate的相关文章

PCI/PCIe接口卡Windows驱动程序(4)- 驱动程序代码(源文件)

本篇文章将对PCIe驱动程序的源文件代码作详细解释与说明.整个WDF驱动程序工程共包含4个头文件(已经在上篇文章中讲解)和3个.c文件(Driver.c  Device.c   Queue.c) Driver.c 在看复杂的代码前,先给出程序流程图 1 #include "driver.h" 2 #include "driver.tmh" 3 4 #ifdef ALLOC_PRAGMA 5 #pragma alloc_text (INIT, DriverEntry)

WDF编程框架

微软的wdk开发包里自带了一些sample,这是些质量不错并且权威的学习资料,最好的学习驱动的方法就是阅读和修改这些代码.其中Ramdisk实现了一个虚拟磁盘,可以作为WDF编程的经典代码材料,<寒江独钓-Windows内核安全编程>第5章"磁盘的虚拟"便以此为例,这篇博客是一篇学习总结. 驱动的入口函数很简洁: NTSTATUS DriverEntry(     IN PDRIVER_OBJECT DriverObject,     IN PUNICODE_STRING 

Windows 驱动开发 - 7

在<Windows 驱动开发 - 5>我们所说的读写操作在本篇实现. 在WDF中实现此功能主要为:EvtIoRead和EvtIoWrite. 首先,在EvtDeviceAdd设置以上两个回调事件. ioQueueConfig.EvtIoRead = EvtIoRead; ioQueueConfig.EvtIoWrite = EvtIoWrite; 然后,在EvtDevicePrepareHardware中获取WDFUSBPIPE并测试他. pDeviceContext->BulkRead

Windows 驱动开发 - 8

最后的一点开发工作:跟踪驱动. 一.驱动跟踪 1. 包含TMH头文件 #include "step5.tmh" 2. 初始化跟踪 在DriverEntry中初始化. WPP_INIT_TRACING( DriverObject, RegistryPath ); WDF_OBJECT_ATTRIBUTES_INIT(&attributes); attributes.EvtCleanupCallback = EvtDriverContextCleanup; (1) WPP跟踪初始化

Windows 驱动开发 - 1

上篇<Windows 驱动开发 - 基础2>已经介绍了windows大概的框架.那么使用WDF有那些的不同呢? 我们知道在WDF中,KMDF是必须的.而KMDF是架构在WDM之上的.  WDM驱动程序模型 在 WDM 驱动程序模型中,每个硬件设备至少有两个驱动程序.其中一个驱动程序我们称为功能(function)驱动程序,通常它就是你认为的那个硬件设备驱动程序.它了解使硬件工作的所有细节,负责初始化 I/O 操作,有责任处理 I/O 操作完成时所带来的中断事件,有责任为用户提供一种设备适合的控

Windows 驱动开发 - 6

上篇<Windows 驱动开发 - 5>我们设置了回调事件EvtIoDeviceControl,我们在此篇来实现他. 我们知道在进行读写之前我们要进行一定约定,比如同步. 在WDF中控制同步约定的方法为:WdfUsbTargetDeviceSendControlTransferSynchronously NTSTATUS WdfUsbTargetDeviceSendControlTransferSynchronously( [in] WDFUSBDEVICE UsbDevice, [in, o

wdk中ramdisk代码解读

入口函数,即驱动加载函数 NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ) /*++ Routine Description: Installable driver initialization entry point. This entry point is called directly by the I/O system. Arguments: DriverObje

windows驱动程序wdf--KMDF大致框架

继WDM后微软出了WDF,封装了WDM中的一些基本代码逻辑.本人菜鸟,也不知道本质上有何区别,只觉得是多了Wdf开头的函数,基本的编程框架上有点出入. KMDF是WDF的内核级部分,为了理清KMDF的结构,又觉得内核编程很复杂,HelloWorld类型的程序实在说明不了什么  修改一下<windows设备驱动WDF开发>的CharSample,查了WDK帮助文档加上注释以帮助自己理解KMDF的大致运作过程. CharSample原本是应用层输入数字字符,驱动读取输入缓冲区返还相应的中文,自己修

windows驱动之WDF---CharSample

驱动程序部分: NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ) /*++ Routine Description: DriverEntry initializes the driver and is the first routine called by the system after the driver is loaded. Parameters Descript