zoukankan      html  css  js  c++  java
  • 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实例 空闲检测

  • 相关阅读:
    用confluence完成室项目管理网站的初步搭建
    初中英语单词词库 for supermemo
    用supermemo背单词4年了
    武汉一点印象
    借个iPad玩玩,越狱4.2.1成功
    TIOBE在2011年3月发布的编程语言排名表
    复杂的工作机构,一把手真是不易
    自己做的项目竟然与马拉松石油公司的数字油田思路惊人的相似!
    iPhone开发笔记[1/50]:初学iPhone上用Quartz 2D画图
    背单词的词条终于达到6500
  • 原文地址:https://www.cnblogs.com/yuanming/p/6744078.html
Copyright © 2011-2022 走看看