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实例 空闲检测

  • 相关阅读:
    C++ 指针 new delete int*与string
    61.Android适配的那些P事(转)
    60.Android通用流行框架大全
    Android Studio配置指南总结
    大数据学习资源(下)
    大数据学习资源(上)
    59.Android开源项目及库 (转)
    Linux 简介
    7款应用最广泛的Linux桌面环境盘点
    58. Android一些开发习惯总结
  • 原文地址:https://www.cnblogs.com/yuanming/p/6744078.html
Copyright © 2011-2022 走看看