wdf专题

WDF驱动开发-WDF总线枚举(一)

支持在总线驱动程序中进行 PnP 和电源管理 某些设备永久插入系统,而其他设备可以在系统运行时插入和拔出电源。 总线驱动 必须识别并报告连接到其总线的设备,并且他们必须发现并报告系统中设备的到达和离开情况。 总线驱动程序标识和报告的设备称为总线的 子设备。 标识和报告子设备的过程称为 总线枚举。 在总线枚举期间,总线驱动程序会为其子 设备创建设备对象 。  总线驱动程序本质上是同时处理总线枚

WDF驱动开发-特定于KMDF的技术(一)

这部分的技术是一些零散的记录知识点,它们主要是在WDF框架中特定于KMDF的部分。 将内核模式驱动程序框架和非 PnP 驱动程序配合使用 如果要为不支持 即插即用 (PnP) 的设备编写驱动程序,则驱动程序必须: 在 WDF_DRIVER_CONFIG 结构的 DriverInitFlags 成员中设置 WdfDriverInitNonPnpDriver 标志;提供 EvtDriverUnl

WDF驱动-中断处理(二)

被动级别的中断是WDF比较有特色的地方之一,在windows下,则可以分为DIRQL、DISPATCH、PASSIVE三级处理,这三级处理是为了避免系统长时间处于高优先级下,其中PASSIVE也被成为被动级别的中断。 从框架版本 1.11 开始,Kernel-Mode Driver Framework (KMDF) 和 User-Mode Driver Framework (在操作系统的 Win

WDF驱动开发-同步技术

使用自动同步 基于框架的驱动程序中几乎所有的代码都驻留在事件回调函数中。 框架会自动同步驱动程序的大部分回调函数,如下所示: 框架始终将 常规设备对象、 功能设备对象 (FDO) 和 物理设备对象 (PDO) 事件回调函数同步,以便每个设备一次只能调用 除 EvtDeviceSurpriseRemoval、 EvtDeviceQueryRemove 和 EvtDeviceQueryStop以外

WDF驱动开发-电源策略(三)

多组件设备的 KMDF 驱动程序只能将请求发送到处于活动状态的组件。 通常,驱动程序将 I/O 队列分配给组件或组件集。 首先考虑分配给单个组件的队列。 驱动程序在组件变为活动状态时启动队列,并在组件空闲时停止队列。 因此,当 KMDF 调用队列的请求处理程序时,设备完全处于 (D0) 状态,并且所需的组件处于活动状态。 请求处理程序可以安全地访问组件硬件。 相同的概念适用于分配给一组组件的队

WDF驱动开发-PNP和电源管理(三)

对于PNP设备来说,理解它们的启动和删除顺序,以及意外移除顺序非常重要,在早期,经常有拔插U盘导致windows重启的例子,这就是意外移除带来的问题。 功能或Filter驱动程序的启动顺序 下图显示了框架调用 WDF (KMDF 和 UMDF V2) 功能或Filter驱动程序的事件回调函数的顺序,从图底部的“设备插入”状态开始: 宽横线标记启动设备所涉及的步骤。 图左侧的列描述了步骤,

windows驱动开发-WDF对象

WDF封装了大量的WDF对象,不过,和应用层不一样,不用去尝试从WDF框架对象类上派生和改写原有的WDF类,本意WDF就是希望我们使用这些对象和类,而不是创造新的奇怪的类。 每个WDF对象都代表着对一项驱动需要使用的子功能的封装;WDF对象本身存在是和WDF框架导出的函数接口对应的;另外,每个版本的WDF可能会有细微的差别。 WDF对象 WDF提供给驱动程序的接口是基于对象的, 框架会定义多

windows wdf 驱动开发总结(5)--PCI 驱动

PCI驱动相关(CY7C09449)(AMCC5933)     PCI总线标准是一种将系统外部设备连接起来的总线标准,它是PC中最重要的总线。其它总线ISA总线,USB总线都挂在PCI总线上。 (2.1)WDF_INTERRUPT_CONFIG_INIT 函数功能:initializes a WDF_INTERRUPT_CONFIG structure. VOID   WDF_INTER

windows wdf 驱动开发总结(4)--usb驱动

(73) WdfIoTargetStart 函数功能:starts sending queued requests to a local or remote I/O target. NTSTATUS WdfIoTargetStart(   [in]  WDFIOTARGET IoTarget ); 参数:IoTarget [in] A handle to a local o

windows wdf 驱动开发总结(3)-usb驱动

(28)      WdfDeviceAllocAndQueryProperty 函数功能:allocates a buffer and retrieves a specified device property NTSTATUS   WdfDeviceAllocAndQueryProperty(     IN WDFDEVICE  Device,     IN DEVICE_REGISTRY

windows wdf 驱动开发总结(2)--usb驱动

武安河:Usbsample (14) WDF_REQUEST_SEND_OPTIONS_INIT 函数功能:initializes a driver's WDF_REQUEST_SEND_OPTIONS structure VOID   WDF_REQUEST_SEND_OPTIONS_INIT(     OUT PWDF_REQUEST_SEND_OPTIONS  Options,

windows wdf 驱动开发总结(1)--usb驱动

(一)EZ-USB-Fx2 USB驱动相关 (1)WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE 功能:初始化驱动的WDF_IO_QUEUE_CONFIG结构 VOID WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(   __out  PWDF_IO_QUEUE_CONFIG Config,   __in   WDF_IO_Q