windows设备驱动程序WDF开发(2)

第4章 KMDF驱动程序编程入门

1. 创建KMDF驱动

    source文件: TARGETNAME=PCI9056WDF  ; 生成的名字

    inx文件, 用build命令可以生成inf

    rc文件

2. 编译,可以在cmd中,也可以在VS2008中

3. inf文件的【add_reg】安装时将其参数写入注册表,DriverEntry会读取这些参数

4. RegSample 介绍了如何读取注册表及win32 app调用方式。

调试:一般来说用DbgView,用windbg也可以

 

 第5章 KMDF驱动程序和应用程序之间的通信

1. 应用打开设备一般用:GUID和符号链接名

   同步:CreateFile ( FILE_ATTRIBUTE_NORMAL)

   异步:CreateFile ( FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED)

   关闭设备 CloseHandle: 会先调用EvtFileCleanup -> EvtFileClose

2. DeviceIoControl 缓冲方式

    METHOD_BUFFERED: 系统分配一个缓冲区用于输入输出

    METHOD_IN_DIRECT/OUT: 输出缓冲区可以用于输入缓冲区

   2) ReadFile 和 WriteFile的两种缓冲区方式

      WdfDeviceInitSetIoType(DeviceInit, WdfDeviceIoDirect);  和 WdfDeviceIoBuffered

3. 获取地址

    3中形式:PVOID, WDFMEMORY, PMDL

    WdfRequestRetrieveInputBuffer(), WdfRequestRetrieveInputMemory(), WdfRequestRetrieveInputWdmMdl()

4. 驱动程序对应用程序的通信

    两种方法:DeviceIoControl 异步完成, Win32事件通知(上层发一个事件句柄,驱动来set该句柄)

 

第6章 即插即用例程

1. EvtDevicePrepareHardware 获取资源配置 (安装时evtDeviceAdd之后调用)

    EvtDeviceReleaseHardware 释放资源配置  (卸载,或设备意外拔出时调用)

PnpPowerSample实例 展示了各个例程调用的顺序

 

第7章 电源管理

1. 6种系统电源状态:s0是工作状态,s5是关机状态

    s4-PowerSystemHibernate, 冬眠状态,(环境被写入到冬眠文件中)

    4种设备电源状态:D0工作态, D3关闭状态。但许多设备往往只定义D0和D3

    输入设备(键/鼠)需D1,MODEM设备需D2

IdleSample实例 空闲检测

 

posted @ 2017-04-27 16:05  波罗蜜  阅读(2055)  评论(0编辑  收藏  举报